python多处理不会同时运行

时间:2017-08-15 05:54:47

标签: python multiprocessing

我正在尝试创建一个python程序,它同时在一个无限循环中运行多个进程,但是一次只执行一个进程,代码中的第一个进程,然后程序的其余部分将不会运行。我需要做些什么来使procceses和主要的procceses同时执行?

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())

1 个答案:

答案 0 :(得分:4)

问题的原因在于以下几行:

     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