day 7-2 multiprocessing开启多进程
一. multiprocessing模块介绍
python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu\_count\(\)查看),在python中大部分情况需要使用多进程。Python提供了multiprocessing。
multiprocessing模块用来开启子进程,并在子进程中执行我们定制的任务(比如函数),该模块与多线程模块threading的编程接口类似。multiprocessing模块的功能众多:支持子进程、
通信和共享数据、执行不同形式的同步,>提供了Process、Queue、Pipe、Lock等组件。
需要再次强调的一点是:与线程不同,进程没有任何共享状态,进程修改的数据,改动仅限于该进程内。
二. Process类的介绍
创建进程的类:
Process([group [, target [, name [, args [, kwargs]]]]]),由该类实例化得到的对象,可用来开启一个子进程 强调:
1. 需要使用关键字的方式来指定参数
2. args指定的为传给target函数的位置参数,是一个元组形式,必须有逗号
参数介绍:
group参数未使用,值始终为None
target表示调用对象,即子进程要执行的任务
args表示调用对象的位置参数元组,args=(1,2,'egon',)
kwargs表示调用对象的字典,kwargs={'name':'egon','age':18}
name为子进程的名称
方法介绍:
p.start():启动进程,并调用该子进程中的p.run()
p.run():进程启动时运行的方法,正是它去调用target指定的函数,我们自定义类的类中一定要实现该方法 p.terminate():强制终止进程p,不会进行任何清理操作,如果p创建了子进程,该子进程就成了僵尸进程,使用该方法需要特别小心这种情况。如果p还保存了一个锁那么也将不会被释放,进而导致死锁
p.is_alive():如果p仍然运行,返回True p.join([timeout]):主线程等待p终止(强调:是主线程处于等的状态,而p是处于运行的状态)。timeout是可选的超时时间。
三. Process类的使用
注意:在windows中Process()必须放到# if __name__ == '__main__':下
开一个进程和主进程是并发的关系,我start一下就是先告诉操作系统我要开一个进程,然而它不会等待,他会去执行下面的代码.
strat():方法的功能
  1.开启进程
  2.执行功能
四. 开启进程的两种方式
from multiprocessing import Process
import time def talk(name):
print("%s is taking"%name)
time.sleep(3)
print("%s is talk over" %name) if __name__=='__main__':
p1=Process(target=talk,args=("jack",))
p2=Process(target=talk,args=("lucy",))
#p3=Process(target=talk,args=("lilei",))
p3=Process(target=talk,kwargs={"name":"lilei"}) # kwargs传参方式
p1.start()
p2.start()
p3.start()
print("主进程")
方式一
class Myprocess(Process):
def __init__(self,name):
super().__init__()
self.name = name def run(self): # 此处的函数名必须为run
print("%s is talking" %self.name)
time.sleep(3)
print("%s is talk over" %self.name) if __name__ == '__main__':
p1 = Myprocess("jack")
p2=Myprocess("lucy")
p3=Myprocess("lilei")
p1.start()
p2.start()
p3.start()
print("主进程...")
方式二
day 7-2 multiprocessing开启多进程的更多相关文章
- 第十五章、python中的进程操作-开启多进程
		
目录 第十五章.python中的进程操作-开启多进程 一.multprocess模块 二.multprocess.process模块 三.Process()对象方法介绍 四.Process()对象属性 ...
 - Python程序中的进程操作--—--开启多进程
		
Python程序中的进程操作-----开启多进程 之前我们已经了解了很多进程相关的理论知识,了解进程是什么应该不再困难了,刚刚我们已经了解了,运行中的程序就是一个进程.所有的进程都是通过它的父进程来创 ...
 - 2013/11/21工作随笔-PHP开启多进程
		
今天被问到一个问题,php如何开启多进程才比较稳定. php开启多进程执行一个操作有哪些方法: 首先想到的是使用pcntl的fork 具体可以参考之前的文章:PHP的pcntl多进程 其次想到的方法是 ...
 - 第二章IPC——IPC与开启多进程
		
问题 一.IPC ①.什么是IPC ②.为什么要有IPC 二.多进程 ①.如何开启多进程 ②.系统如何创建多进程 三.多进程引发的问题 问:私有进程(利用":+进程名")能否共 ...
 - Android IPC机制(一)开启多进程
		
1. 为何要开启多进程 为何开启android应用要开启多进程,主要有以下几点: 单进程所分配的内存不够,需要更多的内存.在早期android系统只为一个单进程的应用分配了16M的可用内存,随着手机的 ...
 - 并发编程——多进程——multiprocessing开启进程的方式及其属性(3)
		
开启进程的两种方式——Process 方式一:函数方法 from multiprocessing import Process import time def task(name): print('% ...
 - Python程序中的进程操作-开启多进程(multiprocess.process)
		
目录 一.multiprocess模块 二.multiprocess.process模块 三.process模块介绍 3.1 方法介绍 3.2 属性介绍 3.3 在windows中使用process模 ...
 - [Python 多线程] multiprocessing、多进程、工作进程池 (十四)
		
由于Python的GIL限制,多线程未必是CPU密集型程序的好的选择. 多进程可以完全独立的进程环境中运行程序,可以充分地利用多处理器. 但是进程本身的隔离性带来的数据不共享也是一个问题.而且线程比进 ...
 - python使用multiprocessing进行多进程编程(1)
		
multiprocessing模块实现了对多进程编程的封装,让我们可以非常方便的使用多进程进行编程.它的使用方法非常类似threading模块. 1.创建一个进程 import multiproces ...
 
随机推荐
- 如何设计一个"好的"测试用例?
			
什么才算是“好的”测试用例? 好的测试用例一定是一个完备的集合,它能够覆盖所有等价类以及各种边界值,而跟能否发现缺陷无关. "好的"测试用例必须具备哪些特征? 一个“好的”测试用例 ...
 - 阿里云windows server 2012 TIME_WAIT CLOSE_WAIT
			
新申请的阿里云windows server 2012 R2上部署安装了socket服务器,但客户端连接后老是断开(心跳包没有),服务假死(服务不断也走),客户端申请连接会也会死在cmd下输入指令 ne ...
 - css3 object-fit详解
			
上传头像的时候遇到了头像变形的问题,最后通过object-fit: cover完美解决了.这个CSS属性可以达到最佳最完美的居中自动剪裁图片的功能. object-fit理解 CSS3 backgro ...
 - UVA10384-The Wall Pushers(迭代加深搜索)
			
Problem UVA10384-The Wall Pushers Accept: 199 Submit: 1546Time Limit: 10000 mSec Problem Descripti ...
 - o.s.b.d.LoggingFailureAnalysisReporter
			
1.错误信息 *************************** APPLICATION FAILED TO START *************************** Descripti ...
 - 转://Linux大内存页Oracle数据库优化
			
PC Server发展到今天,在性能方面有着长足的进步.64位的CPU在数年前都已经进入到寻常的家用PC之中,更别说是更高端的PC Server:在Intel和AMD两大处理器巨头的努力下,x86 C ...
 - 【转】编写微信聊天机器人4《聊天精灵WeChatGenius》:实时获取到微信聊天消息,hook数据库插入操作。
			
接上篇,使用Xposed来hook微信,找到微信进程:https://blog.csdn.net/weixin_42127613/article/details/81839537 既然已经找到了微信进 ...
 - Spring容器的简单实现(IOC原理)
			
引言:容器是什么?什么是容器?Spring容器又是啥东西?我给Spring容器一个对象名字,为啥能给我创建一个对象呢? 一.容器是装东西的,就像你家的水缸,你吃饭的碗等等. java中能作为容器的有很 ...
 - OPPO Developers Conference(2018.12.26)
			
时间:2018.12.26地点:北京国家会议中心
 - 生产者消费者 ProducerConsumer
			
生产者消费者是常见的同步问题.一个队列,头部生产数据,尾部消费数据,队列的长度为固定值.当生产的速度大于消费的速度时,队列逐渐会填满,这时就会阻塞住.当尾部消费了数据之后,生产者就可以继续生产了. 生 ...