Python3线程池:将函数应用于任务生成

2024-09-30 14:32:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要对一个大型生成器中的所有项并行应用一个函数。我不想缓冲返回值,它只是一个巨大的None数组。在

我不知道如何使用concurrent.futureAPI来实现这一点。在

通过一个带有worker cap的线程池将函数应用于生成器中的项,丢弃结果的最简单、最有效的方法是什么?在


Tags: 方法函数none数组线程concurrentcapworker
2条回答

好吧,我就是这么做的。给出以下定义:

from concurrent import futures
import itertools

func    = print          # any function
tasks   = iter(iterable) # any one-time-only iterator
workers = 10

这将使用worker cap将func映射到{},丢弃结果:

^{pr2}$

如果您希望为迭代类似于状态机的多个对象扩展实现,您可以使用我编写的程序。在

https://github.com/talvezu/Python/blob/master/examples/concurrency/producer_consumer_generatored_thread_poll_with_inheritance.py

2上下文。 一个从文件读取任务(2个不同的对象代表2个状态机) 一个上下文保存线程池,当将来完成时,它将使用线程安全队列来通知它已完成,这将导致调用next()方法并继续下一次迭代。在

当对象达到“完成”状态时,它不再返回到池中。在

相关问题 更多 >