gpt4 book ai didi

python - 线程池执行器 : how to limit the queue maxsize?

转载 作者:太空狗 更新时间:2023-10-30 00:53:19 27 4
gpt4 key购买 nike

我正在使用 concurrent.futures 包中的 ThreadPoolExecutor 类

def some_func(arg):
# does some heavy lifting
# outputs some results

from concurrent.futures import ThreadPoolExecutor

with ThreadPoolExecutor(max_workers=1) as executor:
for arg in range(10000000):
future = executor.submit(some_func, arg)

但我需要以某种方式限制队列大小,因为我不想一次创建数百万个 future ,有没有一种简单的方法可以做到这一点,或者我应该坚持使用 queue.Queue 和线程包来完成这个?

最佳答案

Python 的 ThreadPoolExecutor 没有您正在寻找的功能,但是所提供的类可以很容易地按如下方式进行子类化以提供它:

from concurrent import futures
import queue

class ThreadPoolExecutorWithQueueSizeLimit(futures.ThreadPoolExecutor):
def __init__(self, maxsize=50, *args, **kwargs):
super(ThreadPoolExecutorWithQueueSizeLimit, self).__init__(*args, **kwargs)
self._work_queue = queue.Queue(maxsize=maxsize)

关于python - 线程池执行器 : how to limit the queue maxsize?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48263704/

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