1
根據python多進程的docs,進程的產卵需要位於if __name__ == '__main__':
子句的內部,以防止產生無限進程。在主腳本之外使用python多進程
我的問題是否可以在導入中使用多進程? 讓我們說我有這個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)
Obviusly
沿着這類似的規定這將不起作用,因爲foo.py中的if語句中的代碼不會運行。有沒有辦法讓它工作?
據我所知,當你從'm1導入f2'時,它會創建一個新的過程。在Windows上,它會將原始進程的所有字段複製到新進程。在創建新進程的同時,它也會再次執行'from m1 import f2'這一行,因爲它不在'__main__'子句中,它會一次又一次地創建一個新進程* – Curtwagner1984