Python之multiprocessing.Pool(创建多个子进程)
- 当需要创建的子进程数量不多的时候可以直接利用multiprocessing中的Process动态生成多个进程。但是,如果是成百上千个任务,手动创建显然不合适,此时就可以用multiprocessing下的Pool类完成。
- 初始化Pool时,可以指定一个最大的进程数,当有新的请求提交到Pool中时,如果池子还没有满,(即对进程进行有效的管理)那么会创建一个新的进程来执行该请求,如果进程数达到最大数量时,再请求时就会等待Pool中有空余进程可用,直到池中有进度结束,才会创建新的进程来执行,类似停满的停车场
from multiprocessing import Pool import time,os,random #定义一个函数
def download(i):
print('%d--ID号为:%d的进程开始执行'%(i,os.getpid()))
t_start=time.time() #time.sleep(2)
time.sleep(random.random()*10)
t_stop=time.time() print('%d--ID:%d执行完毕,耗时:%f秒'%(i,os.getpid(),t_stop-t_start))
if __name__=='__main__':
po=Pool(3)#定义一个进程池,最大进程数量
for i in range(10):#假设有10个文件要下载
#同步,自加阻塞
po.apply(func=download,args=(i,))
#将请求放进进程池中执行,属于阻塞式请求,一个进程执行完毕后才会执行第二个进程
# 不能体现同时处理三个三个请求
#也就是不能体现并发
#每次循环将会用空闲出来的子进程去调用任务---异步
# po.apply_async(func=download,args=(i,))#异步体现并发,三个进程都在执行任务,其中一个执行完毕后,下一个补上继续执行
print('----start-----') #调用join之前,先调用close函数,否则会出错。
po.close()#关闭进程池,关闭后就不再接受新的请求,即开始执行任务。
po.join()## join函数等待所有子进程结束,才会执行主进程之后的代码
print('-----end------')
Python之multiprocessing.Pool(创建多个子进程)的更多相关文章
- python多进程multiprocessing Pool相关问题
python多进程想必大部分人都用到过,可以充分利用多核CPU让代码效率更高效. 我们看看multiprocessing.pool.Pool.map的官方用法 map(func, iterable[, ...
- python中multiprocessing.pool函数介绍_正在拉磨_新浪博客
python中multiprocessing.pool函数介绍_正在拉磨_新浪博客 python中multiprocessing.pool函数介绍 (2010-06-10 03:46:5 ...
- fork同一时候创建多个子进程的方法
Fork同一时候创建多个子进程方法 第一种方法:验证通过 特点:同一时候创建多个子进程.每一个子进程能够运行不同的任务,程序 可读性较好,便于分析,易扩展为多个子进程 int main(void) { ...
- Linux之创建多个子进程
/*** fork_test.c ***/ #include<stdio.h> #include<stdlib.h> #include<unistd.h> int ...
- Python 多进程 multiprocessing.Pool类详解
Python 多进程 multiprocessing.Pool类详解 https://blog.csdn.net/SeeTheWorld518/article/details/49639651
- [转载]python中multiprocessing.pool函数介绍
原文地址:http://blog.sina.com.cn/s/blog_5fa432b40101kwpi.html 作者:龙峰 摘自:http://hi.baidu.com/xjtukanif/blo ...
- [Python 多线程] multiprocessing、多进程、工作进程池 (十四)
由于Python的GIL限制,多线程未必是CPU密集型程序的好的选择. 多进程可以完全独立的进程环境中运行程序,可以充分地利用多处理器. 但是进程本身的隔离性带来的数据不共享也是一个问题.而且线程比进 ...
- 利用Process类创建多个子进程对象执行任务,主进程负责调度
import time from multiprocessing import Process def run1(): for i in range(5): print("sunck is ...
- Python多进程池 multiprocessing Pool
1. 背景 由于需要写python程序, 定时.大量发送htttp请求,并对结果进行处理. 参考其他代码有进程池,记录一下. 2. 多进程 vs 多线程 c++程序中,单个模块通常是单进程,会启动几十 ...
- Linuxc:创建与监控多个子进程
#include <unistd.h> #include <sys/types.h> #include <stdlib.h> #include <signal ...
随机推荐
- minikube搭建Kubernetes环境
前言 Kubernetes 一般都运行在大规模的计算集群上,管理很严格,Kubernetes 充分考虑到了这方面的需求,提供了一些快速搭建 Kubernetes 环境的工具. minikube 它是一 ...
- Supervisor-进程守护工具
前言 Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启.它是通过fork/exec的方式把这些被管理 ...
- linux 源码安装完php后在目录下找不到php.ini的问题
首先,我们需要确定php版本的php.ini文件需要放在个目录下 我们先执行以下命令查看php的php.ini目录应该放在那个地方 php -i |grep php.ini 效果如下,现在我们确定好了 ...
- 归并排序(递归)(NB)
博客地址:https://www.cnblogs.com/zylyehuo/ 递归思路 # _*_coding:utf-8_*_ import random def merge(li, low, mi ...
- 从Docker Machine到K8S:容器管理为啥有这么多工具?
2018-11-09 18:01 关注嘉为科技,获取运维新知 目录 1.有了Docker,为啥还需要额外容器管理工具 2.Docker三剑客 Docker Machine Docker Compo ...
- CompletableFuture你真的懂了么,我劝你在项目中慎用
1. 前言 在实际做项目中,我们经常使用多线程.异步的来帮我们做一些事情. 比如用户抽取奖品,异步的给他发一个push. 又比如一段前后不相关的业务逻辑,原本是顺序执行,耗时=(A + B + C), ...
- 基于DotNetty实现自动发布 - 背景篇
故事背景 小公司,单体项目,接口和页面都在一起,生产和测试环境都是 Windows 服务器和 IIS, 本地编译完成,把相关的页面和程序集拷贝到服务器上,尤其是涉及到多个页面,一个个页面找到对应的位置 ...
- 感觉程序员要被 AI 淘汰了?学什么才有机会?
感觉程序员要被 AI 淘汰了?学什么才有机会? ️ 推荐观看视频版:https://www.bilibili.com/video/BV1i9Z8YhEja AI 会淘汰程序员么? 我的答案是 &quo ...
- python调用QQ机器人向指定QQ发消息
暂时没想到这个能用来干什么,只是刚好看到相关文章,学习一下,就拿获取基金信息来做试验把 爬取基金的信息就不介绍了,请参考https://www.cnblogs.com/becks/p/14500495 ...
- Intellij, target JRE vesion doesn't match project jdk version
gradle 项目修改这里的gradle jvm