[英]why my program doesn't work when I using multiprocessing module
重现问题的唯一方法是将进程设置为守护进程:
p1 = Process(target=piao, args=('a',))
p2 = Process(target=piao, args=('b',))
p3 = Process(target=piao, args=('c',))
p1.daemon = True
p2.daemon = True
p3.daemon = True
p1.start()
p2.start()
p3.start()
daemon
线程将继续运行,而不会阻止主程序退出。 在我的系统和Python(2.X) daemon
上,默认情况下为False
。 但是根据3.X文档
如果提供,则仅关键字守护程序参数将进程守护程序标志设置为True或False。 如果为None(默认),则此标志将从创建过程中继承。
这意味着Windows上的Python Shell中有可能在没有显式指定的情况下将进程作为daemon
运行。
要更改此设置,请将标志设置为false:
p1.daemon = False
p2.daemon = False
p3.daemon = False
这必须在调用start
之前完成,但是对于Python 3.6,可以在调用Process
对象的命令中完成(请参阅参考资料 )。
或使用join
:
p1.daemon = True
p2.daemon = True
p3.daemon = True
p1.start()
p2.start()
p3.start()
p1.join()
p2.join()
p3.join()
print "done"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.