在主脚本之外使用python多进程



根据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.

相关内容

  • 没有找到相关文章

最新更新