我正在尝试在 Python 中使用多处理来让一个函数在循环中不断被调用,然后访问该函数的最新返回值(通过将值存储在 LIFO 队列中)。
这是主程序的代码片段
q = Queue.LifoQueue()
while True:
p = multiprocessing.Process(target=myFunc, args = (q))
p.daemon = True
p.start()
if not q.empty():
#do something with q.get()
这是来自 myFunc 的代码片段
def myFunc(q):
x = calc()
q.put(x)
问题是,主循环认为 q 是空的。但是,我检查了 myFunc() 是否将值放入 q(通过在 q.put(x) 之后放置 q.empty() 检查)并且队列不应为空。
我该怎么做才能让主循环看到队列中的值?还是我以低效的方式解决这个问题?(我确实需要 myFunc 和主循环单独运行,因为 myFunc 有点慢,主循环需要继续执行它的任务)