簡體   English   中英

python multiprocessing不能同時運行

[英]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))

在那里,您實際上將分別調用test1test2 (即使您永遠不會到達test2調用)。 運行函數后,它將使用返回結果作為target 您想要的是:

     t1 = Process(target=test1, args=(q,))
     t2 = Process(target=test2, args=(q,))

因此,您實際上不想運行test1test2函數,而是將它們的引用(地址)用作target ,然后必須在單獨的參數args提供其輸入參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM