队列模块有一个示例代码:(https://docs.python.org/2/library/queue.html#module-Queue):
def worker():
while True:
item = q.get()
do_work(item)
q.task_done()
q = Queue()
for i in range(num_worker_threads):
t = Thread(target=worker)
t.daemon = True
t.start()
for item in source():
q.put(item)
q.join()我不明白的是,source()函数是什么,“项目”是什么?
我有一个类,它做这样的事情:
class do_stuff():
def do_some_thing_1():
#do something 1
def do_some_thing_2():
#do something 2
def do_some_thing_3():
#do something 3
def do_them_all():
self.do_some_thing_1()
self.do_some_thing_2()
self.do_some_thing_3()在我的图形用户界面脚本中,我调用了类的do_them_all():
some_button(command = get_it_done)
def get_it_done():
get_done = do_stuff()
get_done.do_them_all()并且每个do_thing函数都依赖于要首先完成的前一个函数。但在最终的类植入中,do_some_thing_3可能在do_some_thing_2完成之前触发,或者do_some_thing_2在do_some_thing_1完成之前触发。
如何实现此队列?我要修改do_them_all()吗:
def do_them_all():
queue.put(do_some_thing_1)
queue.put(do_some_thing_2)
queue.put(do_some_thing_3)
queue.join()发布于 2015-02-05 07:47:59
我可以通过一个简单的方法做到这一点:
queue.put(do_some_thing_1)
queue.put(do_some_thing_2)
queue.put(do_some_thing_3)发布于 2018-06-15 11:20:03
queue.put(do_stuff.do_some_thing_1)
queue.put(do_stuff.do_some_thing_2)
queue.put(do_stuff.do_some_thing_3)我觉得你可以试试:
def worker():
while True:
item = q.get()
do_work(item)
q.task_done()
q.put(do_stuff.do_some_thing_1)
q.put(do_stuff.do_some_thing_2)
q.put(do_stuff.do_some_thing_3)
for i in range(num_worker_threads):
t = Thread(target=worker)
t.daemon = True
t.start()
q.join()https://stackoverflow.com/questions/28333266
复制相似问题