首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成器和线程:如何访问线程生成的数据?

生成器和线程:如何访问线程生成的数据?
EN

Stack Overflow用户
提问于 2015-09-13 08:08:30
回答 1查看 58关注 0票数 1
代码语言:javascript
复制
import Queue
import threading
import time

def work(q):
    while True:
        print threading.current_thread().getName() + ":" + str(time.clock())
        yield q.get()
        q.task_done()



def main():
    q = Queue.Queue()

    for i in range(10):
        q.put(i)

    for i in range(3):
        t = threading.Thread(target=work, args=(q,))
        t.daemon = True
        t.start()

    q.join()

在本例中,如何使用由主线程启动的线程所编辑的数据yield

以下是我要做的事:

  1. 主线程启动一个馈线线程,该线程提供要在q1中使用的数据。
  2. 主线程启动使用来自q1的数据并将结果写入q2的工作线程。
  3. 主线程或使用者线程(仅1)使用q2和yield中的数据。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-13 08:09:39

你不能。工作线程不能是生成器。

线程必须是独立操作的函数;它们由threading.Thread()类启动,并从那里独立工作。在那里使用生成器对象没有什么意义。

在本质上,您正在尝试在这里混合并发模型。在线程中使用生成器是可以的,使用生成器作为线程是行不通的。使用队列或其他方式将结果传递回主线程。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32547638

复制
相关文章

相似问题

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