[英]python multiprocessing does not run at same time
我正在嘗試制作一個python程序,該程序在一個無限循環中同時運行多個進程,但是一次只能執行一個進程,第一個在代碼中執行,然后其余程序將無法運行。 我需要做什么才能使兩個過程和主要過程同時執行?
from multiprocessing import *
import time
def test1(q):
while True:
q.put("Banana")
time.sleep(2)
def test2(q):
while True:
q.put("internet")
time.sleep(3)
if __name__ == "__main__":
q = Queue()
t1 = Process(target=test1(q))
t2 = Process(target=test2(q))
t1.start()
t2.start()
q.put("rice")
while True:
print(q.get())
您的問題的原因在於以下幾行:
t1 = Process(target=test1(q))
t2 = Process(target=test2(q))
在那里,您實際上將分別調用test1
和test2
(即使您永遠不會到達test2
調用)。 運行函數后,它將使用返回結果作為target
。 您想要的是:
t1 = Process(target=test1, args=(q,))
t2 = Process(target=test2, args=(q,))
因此,您實際上不想運行test1
和test2
函數,而是將它們的引用(地址)用作target
,然后必須在單獨的參數args
提供其輸入參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.