您可以使用multiprocessing從父腳本啓動子腳本。 A mp.Queue可用於將子腳本的輸出傳遞迴父級。下面是一個簡單的例子:
parent.py:
import multiprocessing as mp
import child
if __name__ == '__main__':
queue = mp.Queue()
proc = mp.Process(target=child.main, args=(queue,))
proc.daemon = True
# This launches the child process, calling child.main()
proc.start()
for i in range(10):
result = queue.get() # Get results from child.main
print(result)
child.py:
import time
def main(queue=None):
for i in range(10):
# do a computation
result = i
if queue:
# Put a result in the queue for the parent to get
queue.put(result)
time.sleep(.5)
if __name__=='__main__':
# We reach here only when child.py is run as a script
# (as opposed to child being imported as a module).
main()
注意,通過queue
通過result
必須picklable。
謝謝你這個答案,但現在我想弄清楚parent.py如何知道啓動child.py腳本而不是其他腳本?,因爲我沒有看到名稱「child.py」在「parent.py」腳本的任何地方都可以提到。 – user904542
parent.py腳本不運行child.py腳本。相反,它只運行一個函數'child.run'。但是這不是真正的限制,因爲您可以輕鬆將腳本的所有動作放入函數中。一些小的重構應該允許你將'child.py'作爲一個獨立的腳本運行,並且還可以導入並調用'child.run'。我會編輯我的答案(希望)澄清我的意思。 – unutbu
我明白了,謝謝。 – user904542