进程的其他方法

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并发编程(守护进程,进程锁,进程队列)相关推荐

  1. 学习笔记(18):Python网络编程并发编程-守护进程

    立即学习:https://edu.csdn.net/course/play/24458/296429?utm_source=blogtoedu 守护进程(了解) 1.概念:守护进程是主进程在创建子进程 ...

  2. 学习笔记(28):Python网络编程并发编程-死锁与递归锁

    立即学习:https://edu.csdn.net/course/play/24458/296445?utm_source=blogtoedu 1.死锁(Lock()的局限性) 知识点:Lock()只 ...

  3. python多线程执行其他模块的文件_python并发编程--进程线程--其他模块-从菜鸟到老鸟(三)...

    concurrent模块 1.concurrent模块的介绍 concurrent.futures模块提供了高度封装的异步调用接口 ThreadPoolExecutor:线程池,提供异步调用 Proc ...

  4. python僵尸进程和孤儿进程_Python Web学习笔记之并发编程的孤儿进程与僵尸进程...

    1.前言 之前在看<unix环境高级编程>第八章进程时候,提到孤儿进程和僵尸进程,一直对这两个概念比较模糊.今天被人问到什么是孤儿进程和僵尸进程,会带来什么问题,怎么解决,我只停留在概念上 ...

  5. python 进程池 等待数量_【2020Python修炼记】python并发编程(六)补充—进程池和线程池...

    1. 2. 为啥要有 进程池和线程池 进程池来控制进程数目,比如httpd的进程模式,规定最小进程数和最大进程数 3.创建进程池的类pool 如果指定numprocess为3,则进程池会从无到有创建三 ...

  6. Python之路(第三十八篇) 并发编程:进程同步锁/互斥锁、信号量、事件、队列、生产者消费者模型...

    一.进程锁(同步锁/互斥锁) 进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的, 而共享带来的是竞争,竞争带来的结果就是错乱,如何控制,就是加锁处理. 例 ...

  7. 并发编程概念、程序线程进程、线程同步、互斥量、读写锁、协程并发

    多线程: 多线程就是同时执行多个应用程序,需要硬件的支持 同时执行:不是某个时间段同时,cpu切换的比较快,所有用户会感觉是在同时运行 并发与并行: 并行(parallel):指在同一时刻,有多条指令 ...

  8. 【Java并发编程 四】Java的进程与线程

    什么是进程?进程是程序的⼀次执⾏过程,是系统运⾏程序的基本单位,因此进程是动态的.系统运行和关闭⼀个程序即是⼀个进程从创建,运⾏到消亡的过程.在 Java 中,当我们启动 main 函数时其实就是启动 ...

  9. python底层网络交互模块_网络和并发编程(面试题)

    1,python的底层网络交互模块有哪些? 答案:socket, urllib,urllib3 , requests, grab, pycurl 2,简述OSI七层模型以及列举各层协议 应用层:HTT ...

最新文章

  1. C语言如何根据数据类型来处理不同的数据?
  2. POJ 2385 Apple Catching
  3. oracle引用vs,VS2013中使用oracle,有关引用哪个.dll
  4. HDU 6071 Lazy Running(同余最短路的应用)
  5. Python之collections模块详细实例
  6. html叠加层,JavaScript实现多个重叠层点击切换效果的方法
  7. 【解决方案】SpringCloud项目优雅发版、部署
  8. 快速从入门到精通!mysql字符串截取前两位
  9. 资深程序员的书单 - 转载自@Axb
  10. vue.js 添加 fastclick的支持
  11. python中的__all__
  12. android mp3文件图片,android 完美获取音乐文件中的专辑图片并显示
  13. java对象赋值优雅写法_JavaScript优雅写法及骚操作
  14. 洛谷 P2414 [NOI2011] 阿狸的打字机 题解
  15. 多表查询和动态SQL
  16. 2018年上半年综合素质作文
  17. 小米智能家居硬件的发展进程盘点
  18. web test LoadRunner docs / loadrunner license、cd-key、download
  19. html samp如何转成块,W3C HTML5标准阅读笔记 - code、var、samp、kbd
  20. [渝粤教育] 西南科技大学 财务管理与分析 在线考试复习资料(1)

热门文章

  1. Variable详解
  2. 使用 HTML5 和 CSS3 创建现代 Web 站点
  3. 时钟偏差、延迟、不确定度、抖动 (skew,latency,uncertainty,jitter)
  4. 计算机公办学校招收人数,2018长沙市小升初微机派位一共有多少人参加
  5. 【Pytest篇】pytest的parametrize之ids参数正文编码问题
  6. 这篇文章几乎回答了你对量化对冲的所有疑问
  7. 服务器看门狗芯片电路图,看门狗芯片-MAX706看门狗电路和AD7988工作原理分别是什么?...
  8. Discuz! X2.5数据库字典【转载】
  9. 基于正点原子探索者使用STM32CubeMX+FreeRTOS+LWIP
  10. hadoop 常用环境变量及使用