Lau*_*ura 22 python windows multiprocessing python-2.7
我正在为初学者学习图书馆,我正在使用Python中的多处理模块.我遇到了这个问题:导入和使用一个使用多处理的模块,而不会在Windows上造成无限循环
举个例子,假设我有一个模块mylibrary.py
:
# mylibrary.py
from multiprocessing import Process
class MyProcess(Process):
def run(self):
print "Hello from the new process"
def foo():
p = MyProcess()
p.start()
Run Code Online (Sandbox Code Playgroud)
以及调用此库的主程序:
# main.py
import mylibrary
mylibrary.foo()
Run Code Online (Sandbox Code Playgroud)
如果我main.py
在Windows上运行,它会尝试将main.py导入到新进程中,这意味着代码会再次执行,从而导致无限循环的进程生成.我可以像这样解决它:
import mylibrary
if __name__ == "__main__":
mylibrary.foo()
Run Code Online (Sandbox Code Playgroud)
但是,这对初学者来说非常困惑,而且似乎没有必要.正在创建新流程mylibrary
,为什么新流程不会导入mylibrary
?有没有办法解决这个问题而不必改变main.py
?
顺便说一句,我正在使用Python 2.7.
Ned*_*der 33
Windows没有fork
,所以没有办法像现有的那样制作新流程.因此,子进程必须再次运行您的代码,但现在您需要一种方法来区分父进程和子进程,__main__
就是这样.
这在以下文档中有所介绍:http://docs.python.org/2/library/multiprocessing.html#windows
我不知道另一种方法来构造代码以避免fork炸弹效应.
归档时间: |
|
查看次数: |
8650 次 |
最近记录: |