如何实现进程间实时通信?
我有两个进程,一个进程的数据需要传递给另一个进程。我写了一个简单的队列来实现实时通信,但这并没有达到我的目的。
下面是一个示例代码:
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