根据python多进程的docs,进程的产生需要在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语句中的代码不会运行。有没有办法使它工作?
答案 0 :(得分:1)
多处理不必在__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
def __main__(): # this is not required, but a good practice
f2() # this would run multiprocessing code
然后调用python m2.py
,您的代码将以mp。