【发布时间】:2019-07-08 09:37:09
【问题描述】:
我需要将数据从子进程传输到主进程。
使用threading.timer 执行重复性任务的子流程
每当调用threading.timer 时,queue 就不再起作用了。
子进程正在获取数据,而我想在主进程中实时显示。
我写了这个 sn-p 来展示这个问题:
import threading
import multiprocessing
class MyClass():
def __init__(self, q):
self.q = q
print("put value in q: ", "start")
self.q.put("start")
self.i = 0
self.update()
def update(self):
if self.i < 3:
print("put value in q: ", self.i)
self.q.put(self.i)
self.i += 1
threading.Timer(0.5, self.update).start()
else:
self.stop()
def stop(self):
print("put value in q: ", "stop")
self.q.put("stop")
if __name__ == "__main__":
q = multiprocessing.Queue()
process = multiprocessing.Process(target = MyClass, args=(q,))
process.start()
process.join()
for i in range(5):
print("get value in q: ",q.get(block = True, timeout = 2))
我只得到这个:
put value in q: start
put value in q: 0
put value in q: 1
put value in q: 2
put value in q: stop
get value in q: start
get value in q: 0
是否有解决方案或变通方法?
【问题讨论】:
标签: python multithreading timer queue multiprocessing