python 进程池不足_python 进程池pool简单使用

平常会经常用到多进程,可以用进程池pool来进行自动控制进程,下面介绍一下pool的简单使用。

需要主动是,在Windows上要想使用进程模块,就必须把有关进程的代码写if __name__ == ‘__main__’ :语句的下面,才能正常使用Windows下的进程模块。Unix/Linux下则不需要。

Pool类

Pool类可以提供指定数量的进程供用户调用,当有新的请求提交到Pool中时,如果池还没有满,就会创建一个新的进程来执行请求。如果池满,请求就会告知先等待,直到池中有进程结束,

才会创建新的进程来执行这些请求。

下面介绍一下multiprocessing 模块下的Pool类下的几个方法:

1、apply()

函数原型:apply(func[, args=()[, kwds={}]])

该函数用于传递不定参数,同python中的apply函数一致,主进程会被阻塞直到函数执行结束(不建议使用,并且3.x以后不在出现)。

2、apply_async

函数原型:apply_async(func[, args=()[, kwds={}[, callback=None]]])

与apply用法一致,但它是非阻塞的且支持结果返回后进行回调。

3、map()

函数原型:map(func, iterable[, chunksize=None])

Pool类中的map方法,与内置的map函数用法行为基本一致,它会使进程阻塞直到结果返回。

注意:虽然第二个参数是一个迭代器,但在实际使用中,必须在整个队列都就绪后,程序才会运行子进程。

4、map_async()

函数原型:map_async(func, iterable[, chunksize[, callback]])

与map用法一致,但是它是非阻塞的。其有关事项见apply_async。

5、close()

关闭进程池(pool),使其不在接受新的任务。

6、terminal()

结束工作进程,不在处理未处理的任务。

7、join()

主进程阻塞等待子进程的退出, join方法要在close或terminate之后使用。

简单实现代码

importmultiprocessingimporttimedeffunc(msg):print("msg:", msg)

time.sleep(3)print("end,", msg)if __name__ == "__main__":#这里设置允许同时运行的的进程数量要考虑机器cpu的数量,进程的数量最好别小于cpu的数量,

#因为即使大于cpu的数量,增加了任务调度的时间,效率反而不能有效提高

pool = multiprocessing.Pool(processes = 3)

item_list= ['processes1' ,'processes2' ,'processes3' ,'processes4' ,'processes5',]

count=len(item_list)for item initem_list:

msg= "hello %s" %item#维持执行的进程总数为processes,当一个进程执行完毕后会添加新的进程进去

pool.apply_async(func, (msg,))

pool.close()

pool.join()#调用join之前,先调用close函数,否则会出错。执行完close后不会有新的进程加入到pool,join函数等待所有子进程结束

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/409536.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php opendir 不能用,PHP opendir() 函数

打开一个目录,读取它的内容,然后关闭:$dir "/images/";// Open a directory, and read its contentsif (is_dir($dir)){if ($dh opendir($dir)){while (($file readdir($dh)) ! false){echo "filename:" . $file . &q…

程序集

程序集 在C#中,我们要使用反射,主要有三个方面: 第一,反射程序集,模块,类的成员以及成员的一些信息; 第二,接下来就是动态调用类的成员方法; 第三个方面就动态产生程序集…

从像素坐标到相机坐标_【视觉知识】机器视觉几何坐标概论

作者:林青春来源:知乎一、机器视觉几何坐标概论机器视觉系统有三大坐标系,分别是:1、世界坐标系,2、摄像机坐标系,3、图像(像素)坐标系。1、世界坐标系世界坐标系(Xw,Yw,Zw)是目标物…

php 对象 数量,php – Symfony2 / Doctrine如何在实体中存储相关对象的数量

我已经设置了一个包含测试对象的包,该对象包含许多testQuestion对象,每个对象都是一个问题和给定的答案(如果没有答案则为0).从树枝上我希望能够从测试对象中获取信息,说明有多少问题以及已经回答了多少问题.我创建了一个查询来将其从数据库中拉出来,在测试实体中我创建了2个新…

GNU make manual 翻译( 一百六十)

继续翻译 The only restriction on this sort of use of nested variablereferences is that they cannot specify part of the name of a functionto be called. This is because the test for a recognized function nameis done before the expansion of nested references.…

vb如何嵌套chrome_译丨如何为开源软件做出贡献

原文:How to Contribute to Open Source Software作者:Matt Eland译者:博轩为保证文章的可读性,本文采用意译,转载请保留原文链接前段时间参加了2020年1月11日Node party线下分享,justjavac 大佬分享的主题…

反转一个单链表,分别以迭代和递归的形式来实现

迭代法&#xff1a; 1 // 反转单链表.cpp : 定义控制台应用程序的入口点。2 3 #include "stdafx.h"4 #include <stdlib.h>5 6 typedef struct node7 {8 int data;9 struct node *next; 10 }linknode,*linklist; 11 12 linknode *reverse(linknode *he…

codesys中打开linux端的串口_CODESYS版本3.5 SP14 Patch 3发布

此版本有以下内容更新主要功能概述&#xff1a;CODESYS Engineering改进了智能输入辅助、监视列表、监视、 CPU负载、编译调试等;新的数据类型&#xff1a;LREAL或REAL中的__VECTOR [3];用于同步任务特别是多核架构的的原子操作符;一般改进&#xff1a;在源代码中的设备树、全局…

java解析md文件,mavon-editor 存储md文件以及md文件解析成html文件

1、md文件的存储javascript由于是vue-cli项目&#xff0c;因此使用的是mavonEditor.css使用方法&#xff1a;vue首先安装&#xff1a;javanpm install mavon-editor --save而后在相应的组件里引用&#xff1a;git//引入import {mavonEditor} from mavon-editorimport mavon-edi…

合并果子(Vijos P1097)

刚刚做出这道题&#xff0c;感觉很兴奋啊&#xff0c;对于我这种弱菜来说能完美的AC这道题真是令人振奋不已啊&#xff01; &#xff08;情不自禁的将AC记录发上来了&#xff0c;勿怪勿怪&#xff01;&#xff09; 这道题是我们向总点名要做的&#xff0c;这几天学了很多新内容…

vim 删除行_【收藏】138条 Vim 命令、操作、快捷键全

关注我&#xff0c;你的眼睛会怀孕命令历史以:和/开头的命令都有历史纪录&#xff0c;可以首先键入:或/然后按上下箭头来选择某个历史命令。启动vim在命令行窗口中输入以下命令即可vim 直接启动vimvim filename 打开vim并创建名为filename的文件文件命令打开单个文件vim file同…

matlab 按钮组设置,MATLAB中的单选按钮和按钮组

MATLAB GUI中的单选按钮和按钮组matlabGUI界面中的单选(radiobutton)按钮不提供互斥功能&#xff0c;要通过程序实现。方法一&#xff1a;假设有3个radiobutton&#xff0c;分别为radiobutton1、radiobutton2、radiobutton3。radiobutton1的回调函数&#xff1a;functionradiob…

十年只为一个摧残的梦(转载)

第一篇《十年只为一个摧残的梦》 一&#xff1a; 这10年&#xff0c;一定要有自己的方向 1.没有方向感&#xff0c;是最要命的 2.不管起点有多低&#xff0c;都要坦然接受  3.围绕自己的兴趣爱好选择职业 4.做自己最擅长的事 5.从最容易实现的目标开始做起 二&#xff1a; 这…

mysql的join算法,Mysql Join 连接算法

Join 语句的两种算法&#xff0c;分别是 Index Nested-Loop Join(NLJ) 和 Block Nested-Loop Join(BNL)。直接使用join mysql 优化器自动选择 驱动表。从驱动表读入数据&#xff0c;然后根据连接字段&#xff0c;根据条件匹配被驱动表&#xff0c;然后返回结果集&#xff0c;重…