![](/img/trans.png)
[英]Can Python multiprocessing process be launched from OTHER than __main__?
[英]Python Multiprocessing Start Process in Module Other Than Main
我有三個模塊, worker
, master
和MainTests
。 我正在運行MainTests
模塊作為主要腳本。 在MainTests
,我調用master.run()
,在其中需要生成多個worker
進程。 這可能嗎? 在我遇到的所有python multiprocessing
教程中,過程都是在主模塊中啟動的。 如果可能的話,有人可以提供一個例子說明一下嗎?
到目前為止,這是我嘗試過的:
工人
import time
class Worker(object):
def __init__(self):
super(Worker, self).__init__()
def run(self):
time.sleep(5)
print("worker done with run")
return
Master.py:
import multiprocessing
class Master(object):
def __init__(self, workers_array):
super(Master, self).__init__()
self.workers_array = workers_array
def run(self):
process_arr = [multiprocessing.Process(worker.run()) for worker in self.workers_array]
[worker_process.start() for worker_process in process_arr]
MainTests.py
from Worker import *
from Master import *
workers_array = [Worker() for i in range(5)]
master = Master(workers_array)
master.run()
出現兩個問題:
在此先感謝您的幫助。
我不確定您是否仍在鎖定答案,但是您只需要在以下if語句中輸入主程序的“入口點”即可:
if __name__ == "__main__":
main()
這樣,您可以在導入的模塊中啟動流程。 有關更多信息,請查看文檔的這一部分以及其中的所有其他內容:)
在您的示例中,它將是:
from Worker import *
from Master import *
if __name__ == __main__:
workers_array = [Worker() for i in range(5)]
master = Master(workers_array)
master.run()
這對我有用。 希望我能幫上忙。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.