在主脚本之外使用python multiprocess

Cur*_*984 5 python python-multithreading python-3.x python-multiprocessing

根据python多进程的文档,进程的产生需要在if __name__ == '__main__':子句中,以防止产生无限的进程。

我的问题是,可以在导入中使用多进程吗?

类似于以下内容:假设我有这个py,它是主要执行的文件:

import foo

def main():
    foo.run_multiprocess()

if __name__ =='__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

和导入的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) 
Run Code Online (Sandbox Code Playgroud)

显然这是行不通的,因为foo.py中if语句中的代码将无法运行。有办法使它工作吗?

kub*_*glu 5

多处理不必在__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])
Run Code Online (Sandbox Code Playgroud)

m2.py

from m1 import f2

if __name__ == '__main__':
    f2() # this would run multiprocessing code
Run Code Online (Sandbox Code Playgroud)

然后调用python m2.py,您的代码将正确运行,并且 mp.

  • 是的,但更重要的是,您_确实需要这条线_。 (2认同)