python守护进程去中断子进程_04 Python并发编程(守护进程,进程锁,进程队列)
进程的其他方法
P = Process(target=f,)
P.Pid 查看进程号 查看进程的名字p.name
P.is_alive() 返回一个true或者False
P.terminate() 给操作系统发送一个结束进程的信号
验证进程之间是空间隔离的
from multiprocessing importProcess
num= 100
deff1():globalnum
num= 3
print(num) #结果 3
if __name__ == '__main__':
p= Process(target=f1,)
p.start()
p.join()print(num) #结果 100
守护进程
主进程的代码运行完毕设置为守护进程的子进程会随之结束
P.daemon = True
importtimefrom multiprocessing importProcessdeff1():
time.sleep(3)print('xxxx')deff2():
time.sleep(5)print('普通子进程的代码')if __name__ == '__main__':
p= Process(target=f1,)
p.daemon=True
p.start()
p2= Process(target=f2,)
p2.start()print('主进程结束') #守护进程会跟跟着父进程的代码运行结束,就结束
进程锁
数据共享 manager
多进程操作共享数据(文件内容)的时候,会造成数据不安全的问题
保证数据安全,但是牺牲了效率,加锁的这段代码大家变成了(同步)串行执行的状态,又叫同步锁\互斥锁
两种锁的方式
l = Lock()
1).with l:
锁中内容
2).
l.acquire()
锁中内容
l.release()
importtimefrom multiprocessing importProcess,Manager,Lockdeff1(m_d,l2):
with l2:#l2.acquire()
tmp = m_d['num']
tmp-= 1time.sleep(0.1)
m_d['num'] =tmp#l2.release()
if __name__ == '__main__':
m=Manager()
l2=Lock()
m_d= m.dict({'num':100})
p_list=[]for i in range(10):
p= Process(target=f1,args=(m_d,l2))
p.start()
p_list.append(p)
[pp.join()for pp inp_list]print(m_d['num'])
队列
Queue()
Q = Queue(10)
Q.put() 放数据
Q.get() 取数据
Q.qsize() 返回的是当前队列中内容的长度
Q.put_nowait() 不等待,但是报错
Q.get_nowait() 不等待,也是报错
Q.full() q.empty()
用队列实现消费者生产者模型 : 缓冲用,解耦用的,
defproducer(q):for i in range(10):
time.sleep(0.2)
s= '大包子%s号'%iprint(s+'新鲜出炉')
q.put(s)
q.join()#就等着task_done()信号的数量,和我put进去的数量相同时,才继续执行
print('所有的任务都被处理了')#消费者
defconsumer(q):while 1:
time.sleep(0.5)
baozi=q.get()print(baozi+'被吃了')
q.task_done()#给队列发送一个取出的这个任务已经处理完毕的信号
if __name__ == '__main__':#q = Queue(30)
q = JoinableQueue(30) #同样是一个长度为30的队列
pro_p= Process(target=producer,args=(q,))
con_p= Process(target=consumer,args=(q,))
pro_p.start()
con_p.daemon=True
con_p.start()
pro_p.join()print('主进程结束')
python守护进程去中断子进程_04 Python并发编程(守护进程,进程锁,进程队列)相关推荐
- 学习笔记(18):Python网络编程并发编程-守护进程
立即学习:https://edu.csdn.net/course/play/24458/296429?utm_source=blogtoedu 守护进程(了解) 1.概念:守护进程是主进程在创建子进程 ...
- 学习笔记(28):Python网络编程并发编程-死锁与递归锁
立即学习:https://edu.csdn.net/course/play/24458/296445?utm_source=blogtoedu 1.死锁(Lock()的局限性) 知识点:Lock()只 ...
- python多线程执行其他模块的文件_python并发编程--进程线程--其他模块-从菜鸟到老鸟(三)...
concurrent模块 1.concurrent模块的介绍 concurrent.futures模块提供了高度封装的异步调用接口 ThreadPoolExecutor:线程池,提供异步调用 Proc ...
- python僵尸进程和孤儿进程_Python Web学习笔记之并发编程的孤儿进程与僵尸进程...
1.前言 之前在看<unix环境高级编程>第八章进程时候,提到孤儿进程和僵尸进程,一直对这两个概念比较模糊.今天被人问到什么是孤儿进程和僵尸进程,会带来什么问题,怎么解决,我只停留在概念上 ...
- python 进程池 等待数量_【2020Python修炼记】python并发编程(六)补充—进程池和线程池...
1. 2. 为啥要有 进程池和线程池 进程池来控制进程数目,比如httpd的进程模式,规定最小进程数和最大进程数 3.创建进程池的类pool 如果指定numprocess为3,则进程池会从无到有创建三 ...
- Python之路(第三十八篇) 并发编程:进程同步锁/互斥锁、信号量、事件、队列、生产者消费者模型...
一.进程锁(同步锁/互斥锁) 进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的, 而共享带来的是竞争,竞争带来的结果就是错乱,如何控制,就是加锁处理. 例 ...
- 并发编程概念、程序线程进程、线程同步、互斥量、读写锁、协程并发
多线程: 多线程就是同时执行多个应用程序,需要硬件的支持 同时执行:不是某个时间段同时,cpu切换的比较快,所有用户会感觉是在同时运行 并发与并行: 并行(parallel):指在同一时刻,有多条指令 ...
- 【Java并发编程 四】Java的进程与线程
什么是进程?进程是程序的⼀次执⾏过程,是系统运⾏程序的基本单位,因此进程是动态的.系统运行和关闭⼀个程序即是⼀个进程从创建,运⾏到消亡的过程.在 Java 中,当我们启动 main 函数时其实就是启动 ...
- python底层网络交互模块_网络和并发编程(面试题)
1,python的底层网络交互模块有哪些? 答案:socket, urllib,urllib3 , requests, grab, pycurl 2,简述OSI七层模型以及列举各层协议 应用层:HTT ...
最新文章
- C语言如何根据数据类型来处理不同的数据?
- POJ 2385 Apple Catching
- oracle引用vs,VS2013中使用oracle,有关引用哪个.dll
- HDU 6071 Lazy Running(同余最短路的应用)
- Python之collections模块详细实例
- html叠加层,JavaScript实现多个重叠层点击切换效果的方法
- 【解决方案】SpringCloud项目优雅发版、部署
- 快速从入门到精通!mysql字符串截取前两位
- 资深程序员的书单 - 转载自@Axb
- vue.js 添加 fastclick的支持
- python中的__all__
- android mp3文件图片,android 完美获取音乐文件中的专辑图片并显示
- java对象赋值优雅写法_JavaScript优雅写法及骚操作
- 洛谷 P2414 [NOI2011] 阿狸的打字机 题解
- 多表查询和动态SQL
- 2018年上半年综合素质作文
- 小米智能家居硬件的发展进程盘点
- web test LoadRunner docs / loadrunner license、cd-key、download
- html samp如何转成块,W3C HTML5标准阅读笔记 - code、var、samp、kbd
- [渝粤教育] 西南科技大学 财务管理与分析 在线考试复习资料(1)
热门文章
- Variable详解
- 使用 HTML5 和 CSS3 创建现代 Web 站点
- 时钟偏差、延迟、不确定度、抖动 (skew,latency,uncertainty,jitter)
- 计算机公办学校招收人数,2018长沙市小升初微机派位一共有多少人参加
- 【Pytest篇】pytest的parametrize之ids参数正文编码问题
- 这篇文章几乎回答了你对量化对冲的所有疑问
- 服务器看门狗芯片电路图,看门狗芯片-MAX706看门狗电路和AD7988工作原理分别是什么?...
- Discuz! X2.5数据库字典【转载】
- 基于正点原子探索者使用STM32CubeMX+FreeRTOS+LWIP
- hadoop 常用环境变量及使用