最新免费视频:www.pythonav.com (冒着被砍死的风险)

并发编程之多进程进程进程

Python 并发编程之多进程

1.1 multiprocessing 模块

Python 中的多线程无法利用多核资源,如果想要充分的使用多核 cpu 的资源,在 Python 中大部分情况需要使用多进程. Python 为我们提供了非常好用的多进程包multiprocessing!

os.cpu_coutn()

multiprocessing模块用来开启子进程,并在模块中执行我们定制的任务(如函数,实现功能等).

multiprocessing 模块的功能有很多:

∆支持子进程
∆通信和共享数据
∆执行不同形式的同步
∆提供了 Process,Queue,Pipe,Lock 等组件

与线程不同,进程没有任何共享状态,进程修改的数据,改动仅限于该进城内.

1.2 Process 类的介绍

创建进程的类

Process([group [, target [, name [, args [, kwargs]]]]]),由该类实例化得到的对象,表示一个子进程中的任务(尚未启动)

强调: 1. 需要使用关键字的方式来指定参数 2. args指定的为传给target函数的位置参数,是一个元组形式,必须有逗号

参数介绍

  1. group参数未使用,值始终为 None(并不懂,也不需要懂)
  2. target 表示调用对象,即子进程要执行的任务.
  3. args 表示调用对象的位置参数元组,args = (1,2,3,'a','b','c':'ff',)
  4. kwargs 表示调用对象的字典 kwargs = {'a':1,'b':2,'c':3}
  5. name 为子进程的名称

方法介绍

  1. p.start()启动 :启动进程,并且调用该子进程中的 p.run()
  2. p.run()调用 :进程启动时运行的方法,正是它去调用 target 指定的函数,我们自定义类的类中一定要实现该方法.
  3. p.terminate()终止进程 :强制终止进程 p,不会进行任何清理操作,如果 p 创建了子进程,该子进程就成了僵尸进程,使用该方法需要特别小心这种情况.如果 p 还保存了一个锁那么也将不会被释放,进而导致死锁.
  4. p.is_alive() :如果p 仍然运行,返回 True.
  5. p.join([timeout])等待终止 :主线程等待 p 终止(强调:是主线程处于等的状态,而 p 是处于运行的状态).timeout 是可选的超时时间,需要强调的是, p.join 只能 join 住 start 开启的进程,而不能 join 住 run 开启的进程.

属性介绍

  1. p.daemon : 默认值为 False, 如果设为 True, 代表 p 为后台运行的守护进程,当 p 的父进程终止时, p 也随之终止,并且设定为 True 后, p 不能创建自己的新进程,必须在 p.start() 之前设置
  2. p.name : 进程的名字
  3. p.pid : 进程的 pid
  4. p.exitcode : 进程在运行时为 None, 如果为- N, 表示被信号 N 结束(了解部分).
  5. p.authkey : 进程的身份验证键,默认是由 os.urandom()随机生成的32字符的字符串. 这个键的用途是为涉及网络连接的底层进程间通信提供安全性,这类连接只有在具有相同的身份验证键时才能成功(了解部分).

1.3 Process 类的使用

首先第一步:创建并开启子进程的两种方式

在 windows 下 Process() 必须放在 ifname == 'mian:'下

#开进程的方法
详见我的 pycharm😂
posted @ 2017-08-29 15:20  uuuuuuu  阅读(153)  评论(0编辑  收藏  举报

最新免费视频:www.pythonav.com (冒着被砍死的风险)