我有两个进程,一个向队列添加作业,另一个从同一个队列中取出作业并运行它们。这应该如预期的那样工作,我不知道为什么worker
永远找不到工作。我的代码是:
from multiprocessing import Process
from Queue import Queue
import time
q = Queue()
def queuer():
while True:
q.put("JOB")
print "Adding JOB"
time.sleep(1)
def worker():
while True:
if not q.empty():
item = q.get()
print "Running", item
else:
print "No jobs"
time.sleep(1)
a = Process(target=queuer)
a.start()
b = Process(target=worker)
b.start()
两件事:
这个代码适用于我:
一种可能是使用多处理命名空间中的Queue对象。描述如下: http://docs.python.org/2/library/multiprocessing.html#sharing-state-between-processes
所以我修改了你的代码。我只做了两个改动: -使用多处理队列 -避免使用全局变量,并将队列作为参数传递给worker和queuer(这不是必需的,但保持所有内容整洁是一个很好的实践)
相关问题 更多 >
编程相关推荐