学习Python3 互斥锁遇到的mac系统遇到的错误 FileNotFoundError: [Errno 2] No such file or directory

在学习互斥锁内容的时候遇到的坑
mac系统
python3.4更新后,默认用“spawn”,开启进程,我们要主动指定为“fork”
spawn:使用此方式启动的进程,只会执行和 target 参数或者 run() 方法相关的代码。Windows 平台只能使用此方法,事实上该平台默认使用的也是该启动方式。相比其他两种方式,此方式启动进程的效率最低。
fork:使用此方式启动的进程,基本等同于主进程(即主进程拥有的资源,该子进程全都有)。因此,该子进程会从创建位置起,和主进程一样执行程序中的代码。注意,此启动方式仅适用于 UNIX 平台,os.fork() 创建的进程就是采用此方式启动的。
forserver:使用此方式,程序将会启动一个服务器进程。即当程序每次请求启动新进程时,父进程都会连接到该服务器进程,请求由服务器进程来创建新进程。通过这种方式启动的进程不需要从父进程继承资源。注意,此启动方式只在 UNIX 平台上有效。
注:打开注释的代码就可以解决问题

from multiprocessing import Process,Lock
# import multiprocessing
import os,time
def work(lock):
    lock.acquire() #加锁
    print('%s is running' %os.getpid())
    time.sleep(2)
    print('%s is done' %os.getpid())
    lock.release() #释放锁
if __name__ == '__main__':
    # multiprocessing.set_start_method('fork')
    lock=Lock()
    for i in range(2):
        p=Process(target=work,args=(lock,))
        p.start()
# 运行报错
# FileNotFoundError:     [Errno 2] No such file or directoryself._semlock = _multiprocessing.SemLock._rebuild(*state)

详细内容查看:http://c.biancheng.net/view/2633.html

posted @ 2020-12-13 15:16  SphxRcrd  阅读(322)  评论(0)    收藏  举报