正如我发现的那样,在多处理方面,Windows 有点像猪,我对此有疑问。
pydoc 声明您应该在使用 multiprocessing 时保护 Windows 应用程序的入口点。
这是否仅意味着创建新进程的代码?
例如
脚本 1
import multiprocessing
def somemethod():
while True:
print 'do stuff'
# this will need protecting
p = multiprocessing.Process(target=somemethod).start()
# this wont
if __name__ == '__main__':
p = multiprocessing.Process(target=somemethod).start()
在此脚本中,您需要将其包装在 if main中,因为生成进程的行。 但如果你有呢?
脚本 2
文件1.py
import file2
if __name__ == '__main__':
p = Aclass().start()
文件2.py
import multiprocessing
ITEM = 0
def method1():
print 'method1'
method1()
class Aclass(multiprocessing.Process):
def __init__(self):
print 'Aclass'
super(Aclass, self).__init__()
def run(self):
print 'stuff'
在这种情况下需要保护什么? 如果文件 2 中有 if __main__ 会发生什么,如果正在创建进程,其中的代码会被执行吗?
注意:我知道代码不会编译。这只是一个例子。