Python进程池Pool
'''
进程池,启动一个进程就要克隆一份数据,假设父进程1G,那么启动进程开销很大
避免启动太多造成系统瘫痪,就有进程池,即同一时间允许的进程数量
ps:线程没有池,因为线程启动开销小,线程有类似信号量来控制
'''
'''
windows上必须加语句:
if __name__ == '__main__':
freeze_support()
'''
from multiprocessing import Pool,freeze_support
import time
import os def Foo(i):
time.sleep(2)
# print(os.getpid())
return i+100
def Bar(arg):
print("hello world",arg)
print(os.getpid()) if __name__ == '__main__':
freeze_support()
pool = Pool(processes=5) # 允许进程池里同时放入5个进程
print(os.getpid())
for i in range(10): # 启动了但是还没被允许,因为同一时间只有5个在运行
# pool.apply_async(func=Foo, args=(i,)) # 并行
# pool.apply(func=Foo, args=(i,)) # 串行
pool.apply_async(func=Foo, args=(i,),callback=Bar) # 并行,并且当且仅当Foo执行完后再执行Bar
# 回调应用场景:批量备份完后,往数据库写日志,但是为啥不让子线程写,而让父进程写?因为父进程里写日志只连一次,子进程里每次都连
print('end')
pool.close()
pool.join() # 这里要先关闭再JOIN。进程池中进程执行完后再关闭,如果注释,那么程序直接关闭
Python进程池Pool的更多相关文章
- python 进程池pool简单使用
平常会经常用到多进程,可以用进程池pool来进行自动控制进程,下面介绍一下pool的简单使用. 需要主动是,在Windows上要想使用进程模块,就必须把有关进程的代码写if __name__ == ‘ ...
- python 进程池Pool以及Queue的用法
import os,time,random from multiprocessing import Pool def task(name): print('正在运行的任务:%s,PID:(%s)'%( ...
- python 进程池pool
进程池子 当你成千上万的业务需要创建成千上万的进程时,我们可以提前定义一个进程池 from multiprocessing import Pool p = Pool(10) #进程池创建方式,类似空任 ...
- python 进程池Pool的apply_async方法以及一些需要注意的地方
在写多进程的时候我发现一个问题,用Pool的apply_async(异步非阻塞)的时候传入实例函数会出错,或者说是子进程被跳过似的感觉(python2.7). 但是用python3.7的话没有任何问题 ...
- python进程池pool的starmap的使用
#!/usr/bin/env python3 from functools import partial from itertools import repeat from multiprocessi ...
- Python多进程库multiprocessing创建进程以及进程池Pool类的使用
问题起因最近要将一个文本分割成好几个topic,每个topic设计一个regressor,各regressor是相互独立的,最后汇总所有topic的regressor得到总得预测结果.没错!类似bag ...
- python进程池:multiprocessing.pool
本文转至http://www.cnblogs.com/kaituorensheng/p/4465768.html,在其基础上进行了一些小小改动. 在利用Python进行系统管理的时候,特别是同时操作多 ...
- [转]Python多进程并发操作中进程池Pool的应用
Pool类 在使用Python进行系统管理时,特别是同时操作多个文件目录或者远程控制多台主机,并行操作可以节约大量的时间.如果操作的对象数目不大时,还可以直接使用Process类动态的生成多个进程,十 ...
- Python多进程并发操作中进程池Pool的应用
Pool类 在使用Python进行系统管理时,特别是同时操作多个文件目录或者远程控制多台主机,并行操作可以节约大量的时间.如果操作的对象数目不大时,还可以直接使用Process类动态的生成多个进程,十 ...
随机推荐
- java基础(三)-----java的三大特性之多态
面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承 ...
- IdentityServer Topics(7)- 注销
注销IdentityServer与删除身份cookie一样简单,但是我们必须考虑将用户从客户端应用程序(甚至可能是上游身份提供程序)中注销. 一.删除身份认证Cookie 要删除身证认证cookie, ...
- VR开发相关资源
1. VRTK(StreamVR TOOLKIT):https://github.com/thestonefox/VRTK 2. StrangeIoc 专为c#和Unity写的框架 3. Frame ...
- 拥抱单页网站! jQuery全屏滚动插件fullPage.js
不知道从什么时候开始,单页网站就悄悄走进人们的视线,尤其是国外的网站,更是钟爱单页网站.制作一个全屏滚动的效果,然后每个滚动页弄一个好看的背景色,配上一些描述性的文字,大家都喜欢这么弄,仿佛逼格瞬间可 ...
- IntelliJ IDEA上操作GitHub
IntelliJ IDEA集成了对GitHub的支持,使上传代码到GitHub和从GitHub下载代码更加方便快捷. 一. 分享代码到GitHub 1.首先需要在IntelliJ配置Git,如果没有正 ...
- centos7忘记root密码
开机时狂点方向键下(Windows还原习惯了),或者狂点别的键.目的为了不让它进入系统. 方向键移动光标定位在第一行,按e编辑它. 在新界面找到linux16开头的行.→光标到 ro 改成rw ...
- C#工具:ASP.NET MVC生成图片验证码
1.复制下列代码,拷贝到控制器中. #region 生成验证码图片 // [OutputCache(Location = OutputCacheLocation.None, Duration = 0, ...
- C++系列总结——new和delete
前言 "new和malloc()有什么区别",这是一个很常见的C++面试题.我的回答是"new等于malloc()后再选择性执行构造函数".执行流程上是这样的, ...
- Spring Cloud Eureka 常用配置及说明
配置参数 默认值 说明 服务注册中心配置 Bean类:org.springframework.cloud.netflix.eureka.server.EurekaServerConfigBean eu ...
- vue 组件通信
组件 组件之间的数据是单向绑定的. 父组件向子组件通信 是通过子组件定义的props属性来实现.通过props定义变量与变量类型和验证方式. props简化定义 在简化定义中,变量是以数组的方式定义. ...