Python 以线程方式创建生成器
如何创建一个线程生成器,以便在第一次完成时立即提供输出,即我有Python 以线程方式创建生成器,python,multithreading,Python,Multithreading,如何创建一个线程生成器,以便在第一次完成时立即提供输出,即我有客户端。解码执行一些nltk,然后为链接中的每个链接返回一个字符串,它将提供一个不同的字符串(无论链接如何) 我想要的是加快速度,而不是在for循环中一次解决一个问题,我希望在函数生成后立即得到函数的输出如果有多个生成器同时运行(在不同的线程中),那么它们都应该放入它们的“输出”进入一个共享的队列,应该有一些其他线程(可能是主线程)持续检查队列的内容,并获取放入队列的内容,但不包括生成器。这假设生成器正在执行的其余代码也是线程安全的。
客户端。解码
执行一些nltk
,然后为链接中的每个链接返回一个字符串,它将提供一个不同的字符串(无论链接如何)
我想要的是加快速度,而不是在for循环中一次解决一个问题,我希望在函数生成后立即得到函数的输出如果有多个生成器同时运行(在不同的线程中),那么它们都应该
放入它们的“输出”进入一个共享的队列
,应该有一些其他线程(可能是主线程)持续检查队列的内容,并获取放入队列的内容,但不包括生成器。这假设生成器正在执行的其余代码也是线程安全的。如果您有多个生成器同时运行(在不同的线程中),则它们都应该将其“输出”放入共享的队列中,并且应该有其他线程(可能是主线程)它不断地检查队列的内容,并获取被放入队列中的东西,但不包括生成器。这假设生成器正在执行的其余代码也是线程安全的。
from scrapy.http import JsonRequest
import nltk,json,os
class Hd3Spider(scrapy.Spider):
name = 'hd3'
def start_requests(self):
url = get_url('http://httpbin.org/anything')
for di in links:
decoded_str = client.decode(type=4,) #function that takes about 40-100 sec
data = {'decoded_str': decoded_str}}
yield JsonRequest(url, data=data, callback=self.parse,meta={'original':di['enc']})
def parse(self,response):
#rest of code