Python 多进程报错
AttributeError: module ‘os’ has no attribute ‘fork’ 原因与解决方法今天在看Python多进程的时候,在Windows上运行Python代码的时候,出现了如下错误:
AttributeError: module ‘os‘ has no attribute ‘fork‘
中文翻译
AttributeError:模块“ os”没有属性“ fork”
?
?
而我直接在Linux上运行,却又不会出现这个错误,如下图:
?
?
经过一番资料查找,到了具体的原因,如下:
由于Windows没有fork调用,上面的代码在Windows上无法运行。因此,建议 os.fork() 不要在windows系统上用。
如果想要有fork调用,推荐大家用Unix/Linux或mac系统的电脑。
?
解决方法
由于Windows没有fork调用,难道在Windows上无法用Python编写多进程的程序?无法调用fork吗?
答案肯定是:NO!
?
windows下可以使用multiproessing代替os.fork功能。
?
由于Python是跨平台的,自然也应该提供一个跨平台的多进程支持。multiprocessing模块就是跨平台版本的多进程模块。
?
multiprocessing模块提供了一个Process类来代表一个进程对象,下面的例子演示了启动一个子进程并等待其结束:
?
?
def run_proc(name):
? ? print(‘运行子进程%s(%s)......‘%(name,os.getpid()))
if __name__ == ‘__main__‘:
? ? print(‘父进程%s‘%os.getpid())
? ? p = Process(target=run_proc,args=(‘test‘,))
? ? print(‘子进程将开始‘)
? ? p.start()
? ? p.join()
? ? print(‘子进程结束‘)
?
结果:
?
父进程19124
子进程将开始
运行子进程test(19132)......
子进程结束
[Finished in 0.7s]
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?