gpt4 book ai didi

python - 暂停 Python 生成器

转载 作者:太空宇宙 更新时间:2023-11-03 12:42:05 25 4
gpt4 key购买 nike

我有一个 python 生成器,它可以生成大量数据,这会占用大量内存。有没有一种方法可以检测处理后的数据是否已被使用生成器的代码“消耗”,如果是,则暂停直到它被消耗?

def multi_grab(urls,proxy=None,ref=None,xpath=False,compress=True,delay=10,pool_size=50,retries=1,http_obj=None):
if proxy is not None:
proxy = web.ProxyManager(proxy,delay=delay)
pool_size = len(pool_size.records)
work_pool = pool.Pool(pool_size)
partial_grab = partial(grab,proxy=proxy,post=None,ref=ref,xpath=xpath,compress=compress,include_url=True,retries=retries,http_obj=http_obj)
for result in work_pool.imap_unordered(partial_grab,urls):
if result:
yield result

运行于:

if __name__ == '__main__':
links = set(link for link in grab('http://www.reddit.com',xpath=True).xpath('//a/@href') if link.startswith('http') and 'reddit' not in link)
print '%s links' % len(links)
counter = 1
for url, data in multi_grab(links,pool_size=10):
print 'got', url, counter, len(data)
counter += 1

最佳答案

生成器只是产生值。生成器无法知道对它们做了什么。

但是生成器也会不断暂停,因为调用者会做任何它做的事情。它不会再次执行,直到调用者调用它来获取下一个值。它不在单独的线程或任何东西上运行。听起来您对生成器的工作原理有误解。你能展示一些代码吗?

关于python - 暂停 Python 生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7001917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com