如何实现进程间实时通信?

0 投票
2 回答
592 浏览
提问于 2025-04-16 16:49

我有两个进程,一个进程的数据需要传递给另一个进程。我写了一个简单的队列来实现实时通信,但这并没有达到我的目的。

下面是一个示例代码:

from multiprocessing import Process , Pipe , Queue
a , b = Pipe()
q = Queue()

def f(name):
i = 0
while i < 4:
    q.put(i)
    i += 1


def t():
 print q.get()

if __name__ == '__main__':
 p = Process(target=f, args=('bob',))
 p.start()
 p.join()
 p1 = Process(target=t, args= (''))
 p1.start()
 p1.join()

我期望的输出是 0 1 2 3 4,但我只得到了 0。我该如何解决这个问题呢?

2 个回答

1

你只调用了一次 get() 函数。它一次只返回一个项目。

顺便说一下,你的函数 f 写得不太符合 Python 的风格,太:

def f(name):
    for i in range(4):
        q.put(i)

你还把 q 当作全局变量在用……

1

试试这个版本:

def t():
    while True:
        try:
            print q.get(timeout=1)
        except:
            break

撰写回答