Python学习随笔(十)

Python学习随笔(十)

直接看参考

多进程
进程:程序的一次动态执行过程,包括代码段、数据段、堆栈段、一组寄存器和内核状态,是操作系统中资源调度和任务分配的基本/独立单位。
在Windows上要想使用进程模块,就必须把有关进程的代码写在if __name__ == ‘__main__’ 内,否则在Windows下使用进程模块会产生异常。
multiprocessing模块是跨平台版本的多进程模块
from multiprocessing import Process
Process类代表一个进程对象
p = Process(name=进程名 , target=调用对象,即子进程执行的任务 , args=调用对象的参数元组,kwargs=调用对象的字典) 创建进程
p.start() 启动进程
p.join([timeout]) 在当前位置阻塞主进程,进程p结束后再继续执行主进程,用于进程间的同步,timeout为可选择超时时间;p.join只能join住start开启的进程,而不能join住run开启的进程
p.terminate() 强制终止进程,不进行任何清理操作
p.daemon=False 默认值为False,如果设置为True,代表该进程为后台守护进程;当该进程的父进程终止时,该进程也随之终止;并且设置为True后,该进程不能创建子进程,设置该属性必须在start()之前
p.pid 进程ID标识,如果在start函数之前获取pid默认为None,因为进程还未创建,获取不到pid

进程间通信Queue/Pipe
from multiprocessing import Queue
q=Queue() Queue适用于多个进程之间通信
q.put() 将数据插入队列中
q.get()从队列读取并且删除一个元素
from multiprocessing import Pipe
pipe = Pipe() Pipe适用于两个进程之间通信(一对一)
pipe.send() 发送信息
pipe.recv() 接受信息

进程互斥锁Lock
当有多个进程Process同时读写同一个文件时,为了避免数据读写产生异常,需要为正在操作的进程加上互斥锁
from multiprocessing import Lock
mutex=Lock() 创建进程互斥锁
mutex.acquire() 锁定资源
mutex.release() 释放资源

进程池Pool
from multiprocessing import Pool
pool=Pool(processes=n) 最多允许n个进程同时进行
pool.apply_async(func, args ) 使用非阻塞方式调用func,args为传递给func的参数列表
pool.close() 关闭进程池,不再接受新任务
pool.terminal() 结束进程,停止处理任务
pool.join() 主进程阻塞等待子进程的结束, join方法要在close或terminate之后使用。

进程Process和线程threading区别
线程并发和进程并行

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值