首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >queue.put(),在put()中放入什么项目?

queue.put(),在put()中放入什么项目?
EN

Stack Overflow用户
提问于 2015-02-05 07:03:43
回答 2查看 1.2K关注 0票数 1

队列模块有一个示例代码:(https://docs.python.org/2/library/queue.html#module-Queue):

代码语言:javascript
复制
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()函数是什么,“项目”是什么?

我有一个类,它做这样的事情:

代码语言:javascript
复制
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():

代码语言:javascript
复制
  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()吗:

代码语言:javascript
复制
def do_them_all():
    queue.put(do_some_thing_1)
    queue.put(do_some_thing_2)
    queue.put(do_some_thing_3)

    queue.join()
EN

回答 2

Stack Overflow用户

发布于 2015-02-05 07:47:59

我可以通过一个简单的方法做到这一点:

代码语言:javascript
复制
queue.put(do_some_thing_1)
queue.put(do_some_thing_2)
queue.put(do_some_thing_3)
票数 0
EN

Stack Overflow用户

发布于 2018-06-15 11:20:03

代码语言:javascript
复制
queue.put(do_stuff.do_some_thing_1)
queue.put(do_stuff.do_some_thing_2)
queue.put(do_stuff.do_some_thing_3)

我觉得你可以试试:

代码语言:javascript
复制
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()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28333266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档