• 当需要创建的子进程数量不多的时候可以直接利用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(创建多个子进程)的更多相关文章

  1. python多进程multiprocessing Pool相关问题

    python多进程想必大部分人都用到过,可以充分利用多核CPU让代码效率更高效. 我们看看multiprocessing.pool.Pool.map的官方用法 map(func, iterable[, ...

  2. python中multiprocessing.pool函数介绍_正在拉磨_新浪博客

    python中multiprocessing.pool函数介绍_正在拉磨_新浪博客     python中multiprocessing.pool函数介绍    (2010-06-10 03:46:5 ...

  3. fork同一时候创建多个子进程的方法

    Fork同一时候创建多个子进程方法 第一种方法:验证通过 特点:同一时候创建多个子进程.每一个子进程能够运行不同的任务,程序 可读性较好,便于分析,易扩展为多个子进程 int main(void) { ...

  4. Linux之创建多个子进程

    /*** fork_test.c ***/ #include<stdio.h> #include<stdlib.h> #include<unistd.h> int ...

  5. Python 多进程 multiprocessing.Pool类详解

    Python 多进程 multiprocessing.Pool类详解 https://blog.csdn.net/SeeTheWorld518/article/details/49639651

  6. [转载]python中multiprocessing.pool函数介绍

    原文地址:http://blog.sina.com.cn/s/blog_5fa432b40101kwpi.html 作者:龙峰 摘自:http://hi.baidu.com/xjtukanif/blo ...

  7. [Python 多线程] multiprocessing、多进程、工作进程池 (十四)

    由于Python的GIL限制,多线程未必是CPU密集型程序的好的选择. 多进程可以完全独立的进程环境中运行程序,可以充分地利用多处理器. 但是进程本身的隔离性带来的数据不共享也是一个问题.而且线程比进 ...

  8. 利用Process类创建多个子进程对象执行任务,主进程负责调度

    import time from multiprocessing import Process def run1(): for i in range(5): print("sunck is ...

  9. Python多进程池 multiprocessing Pool

    1. 背景 由于需要写python程序, 定时.大量发送htttp请求,并对结果进行处理. 参考其他代码有进程池,记录一下. 2. 多进程 vs 多线程 c++程序中,单个模块通常是单进程,会启动几十 ...

  10. Linuxc:创建与监控多个子进程

    #include <unistd.h> #include <sys/types.h> #include <stdlib.h> #include <signal ...

随机推荐

  1. Go语言修改字符串

    Go 语言的字符串无法直接修改每一个字符元素,只能通过重新构造新的字符串并赋值给原来的字符串变量实现.请参考下面的代码: angel := "Heros never die" an ...

  2. OkHTTP发送POST请求传送JSON数据

    导入依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> ...

  3. 面试题-Java虚拟机

    前言 Java虚拟机部分的题目,是我根据Java Guide的面试突击版本V3.0再整理出来的,其中,我选择了一些比较重要的问题,并重新做出相应回答,并添加了一些比较重要的问题,希望对大家起到一定的帮 ...

  4. 配置jenkins的shell自动打包的脚本

    #!/bin/bash#服务名称SERVER_NAME=jenkins-test# 源jar路径,mvn打包完成之后,target目录下的jar包名称,也可选择成为war包,war包可移动到Tomca ...

  5. 🎀gh-ost工具介绍及使用

    简介 gh-ost 是一款由GitHub开发的在线DDL(Online Data Definition Language)变更工具,专门用于MySQL数据库.它允许在不锁定表的情况下执行数据库模式变更 ...

  6. python读取文件夹内所有图片名称,随机设置为桌面壁纸且把设置后的图片移到其他文件夹内的方法

    关键词:读取文件夹.读取文件.操作系统.设置壁纸.移动文件 预期实现如下几个步骤 1.获取指定文件夹内所有图片名 2.随机取一张图片设置为壁纸 3.设置为壁纸的图片移动到另外一个文件夹中 第一步,获取 ...

  7. eolinker同一个自动化用例内执行不同端接口遇到的问题(主要是两套host环境共存的问题)解决方法

    特别注意:需要使用全局变量或者预处理前务必阅读本链接https://www.cnblogs.com/becks/p/13713278.html eolinker内同一套环境只能配置一个host地址,如 ...

  8. 一条 SQL 语句在 MySQL 中的执行过程

    一条 SQL 语句在 MySQL 中的执行过程 当一条 SQL 语句被提交到 MySQL 时,它会经历多个步骤,包括解析.优化.执行等.以下以 SELECT 语句为例,详细描述整个执行流程. 1. 客 ...

  9. 如何使用Streamlit快速创建仪表盘?

    上文有快速带大家了解streamlit,因为工作需要,这两天尝试构建了仪表盘,也就是咱们常说的Dashboard,本篇文章将教你如何使用 Streamlit 快速创建一个简单的仪表盘. 前言 Stre ...

  10. 如何使用CSS和JS使网页页面灰掉

    让页面灰掉,通常是通过CSS样式或JavaScript来实现.以下是一些具体的方法: 一.使用CSS样式 应用filter属性 CSS的filter属性可以用来对元素应用图形效果,如灰度.要将整个页面 ...