根据python的multiprocess的文档,进程的衍生需要在if __name__ == '__main__':
子句中,以防止衍生无限个进程。
我的问题,是否有可能在导入中使用多进程?
类似这样的内容:假设我有这个py这是主要执行的文件:
import foo
def main():
foo.run_multiprocess()
if __name__ =='__main__':
main()
和导入的foo.py文件:
def run_multiprocess(number_to_check):
if number_to_check == 5:
print(number_to_check)
if __name__ == '__main__':
list_to_check = {1,2,3,4,5,6,7}
pool = Pool(processes=4)
pool.map(process_image, list_to_check)
显然这是行不通的,因为foo.py中if语句中的代码不会运行。有办法让它起作用吗?
多进程不必在__main__
块内运行,__main__
块仅在文件通过python filename.py
运行时使用。
如果你这样做了:
m1.py
:
from multiprocessing import Pool
def f(x):
return x^2
def f2():
p = Pool(5)
p.map(f, [1,2,3,4,5])
m2.py
:
from m1 import f2
if __name__ == '__main__':
f2() # this would run multiprocessing code
,然后调用python m2.py
,您的代码将正常运行,使用mp.