队列模块有一个示例代码: (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()函数是什么,'items'是什么?
我有一个类似这样的课程:
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()
在我的GUI脚本中,我调用了类的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()
答案 0 :(得分:0)
我能够用一个简单的方法做到这一点:
queue.put(do_some_thing_1)
queue.put(do_some_thing_2)
queue.put(do_some_thing_3)
答案 1 :(得分:0)
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()