有界进程和线程池执行器

bounded-pool-executor的Python项目详细描述


有界进程和线程池执行器

来自concurrent.futuresProcessPoolExecutor&;ThreadPoolExecutor的有界信号量

安装

pip install bounded-pool-executor

主要问题是什么?

如果使用标准模块“concurrent.futures”,并希望同时处理数百万个数据,则工作队列将占用所有可用内存。

如果脚本在弱vps上运行,这将导致内存泄漏

boundedprocesspoolexecutor与processpoolexecutor的比较

boundedprocesspoolexecutor

boundedprocesspoolexecutor仅当另一个工作进程完成其工作时,才会将新工作进程放入队列。

frombounded_pool_executorimportBoundedProcessPoolExecutorfromtimeimportsleepfromrandomimportrandintdefdo_job(num):sleep_sec=randint(1,10)print('value: %d, sleep: %d sec.'%(num,sleep_sec))sleep(sleep_sec)withBoundedProcessPoolExecutor(max_workers=5)asworker:fornuminrange(10000):print('#%d Worker initialization'%num)worker.submit(do_job,num)

结果:

BoundedProcessPoolExecutor

经典的concurrent.futures.processpoolexecutor

processpoolexecutor将所有工作进程插入队列,并希望在释放新工作进程时执行任务,具体取决于max_workers的值。

importconcurrent.futuresfromtimeimportsleepfromrandomimportrandintdefdo_job(num):sleep_sec=randint(1,3)print('value: %d, sleep: %d sec.'%(num,sleep_sec))sleep(sleep_sec)withconcurrent.futures.ProcessPoolExecutor(max_workers=5)asworker:fornuminrange(100000):print('#%d Worker initialization'%num)worker.submit(do_job,num)

结果:

concurrent.futures.ProcessPoolExecutor

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JTable无法向新创建的列添加值   java如何调整JEditorPane中编辑区域的大小?   Java通过反射确定未知数组中的数组大小   java Intellij Idea有时无法按其预期的方式构建应用程序   java Swing GUI带有IntelliJ错误“contentPane不能设置为null”从终端编译时   如何将这些通用方法调用从C#转换为Java   在null上找不到java属性或字段“index”   从Java HashMap获取整数值时是否需要调用intValue()方法?   java Android谷歌地图获取相机中的图像块   unix无法捕获JAVA中“who m”命令的输出   java,同时将邮件发送到“收件人”标题“我”中的多个收件人   在java中向链表添加未知数量的节点   无法为Heroku上的discord bot设置java端口   java使用Apache HttpClient进行选项请求   与元素类型“ApplicationName”关联的属性“Application Version”需要java Open quote   Android Studio Java中的两个变量求和