• 当需要创建的子进程数量不多的时候可以直接利用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. ubuntu 刷新 hosts 命令

    systemd-resolved 服务 sudo systemctl restart systemd-resolved 这个命令将重启 systemd-resolved 服务,该服务负责 DNS 解析 ...

  2. 妙用PHP函数处理数组

    PHP的数组是一种很强大的数据类型,与此同时PHP内置了一系列与数组相关的函数可以轻松地实现日常开发功能. 1. 取数组指定键名列 对于某些关联数组,有时候我们只想取指定键名的那部分,比如数组为 [' ...

  3. Pydantic Mixin:构建可组合的验证系统体系

    title: Pydantic Mixin:构建可组合的验证系统体系 date: 2025/3/22 updated: 2025/3/22 author: cmdragon excerpt: Pyda ...

  4. BUUCTF---天干地址+甲子

    题目 直接参考天干地支表作结,转ASCII flag{Goodjob}

  5. ARM开发板——实时获取用户点击触摸屏的LCD坐标信息(阻塞式读取)

    ARM开发板--实时获取用户点击触摸屏的LCD坐标信息(阻塞式读取) 目录 ARM开发板--实时获取用户点击触摸屏的LCD坐标信息(阻塞式读取) 1.硬件信息 2.代码需求 3.代码实现 1.硬件信息 ...

  6. CoreOS 更新重启后, 所有容器服务全部停掉了

    今天有几个服务出问题了,上去看了下,这台 CoreOS 下的所有容器服务竟然全部停掉了,好奇怪,启动容器时明明加了--detach参数了呀. 问题原因 想了想,会不是是 CoreOS 更新重启导致的, ...

  7. C++数据的共享和保护

    1.函数原型作用域:C++中最小的作用域 ①在函数原型声明时,形参的作用范围就是函数原型作用域. 2.局部作用域/块作用域 3.类作用域 类可以被看做是一组有名成员的集合,类X的成员m具有类作用域,对 ...

  8. sonarqube+gitlab+jenkins+maven集成搭建(四)

    安装Gitlab 关闭firewalld防火墙和selinux防火墙,如图1-2:[root@localhost ~]# systemctl stop firewalld[root@localhost ...

  9. Python3正则表达式(一)

    Python3正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. r ...

  10. Linux还能拯救U盘???---U盘的起死回生

    作死;): 今天U盘在处理某些东西的时候,我性子急,直接把进程结束了,然后,就悲剧了( ̄ 'i  ̄;) 插到电脑上,一插就卡,一点就未响应,未响应.... PE系统打开还是老样子... 右键想格式化, ...