繁体   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