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语句中的代码将无法运行。有办法使它工作吗?
多处理不必在__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.
| 归档时间: |
|
| 查看次数: |
2694 次 |
| 最近记录: |