进程的其他方法

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++回调函数 callback
  2. 类库、通用变量、is和as、委托
  3. 【转】轻松记住大端小端的含义(附对大端和小端的解释)
  4. opencv 访问图像的像素方法和算法用时的计算
  5. Multisim10的4013BD_5V测试电路
  6. 博弈论(四)——#10246. 「一本通 6.7 练习 3」取石子
  7. docker curl: (56) Recv failure: Connection reset by peer问题解决方法
  8. STM32读写RAM
  9. 解决scalac Error: bad option -make:transitive
  10. 钽电容和铝电解电容的区别
  11. 音视频基础知识---音频编码格式
  12. python3 币种汇率计算
  13. Chainer Chemistry | 用于化学和生物学的深度学习库
  14. 小姐姐拯救计划之我的NAS有ipv6域名之蛇皮操作
  15. 基于MATLAB2020b的J. R.S. THOM的水强制循环沸腾压降预测模型压降倍乘系数计算器
  16. 重置Win10系统后微软应用商店Microsoft Store的恢复方法
  17. 【算法S5-贪心方法】
  18. 裸辞2个月找不到工作,我慌了
  19. 【flutter布局】如何在动态宽高的容器下,使子组件自动占满宽高
  20. 鱼c工作室python-鱼C工作室Python作业

热门文章

  1. 前端-可视化创建vue项目
  2. STOS指令和LEA指令
  3. matlab awgn函数加入高斯白噪声
  4. win11右键直接显示更多选项
  5. 关于eMule下载伤硬盘的话题(官方解释)
  6. 【UV打印机】理光喷头组合说明(5H)
  7. 无意苦争春,一任群芳妒!M1 Mac book(Apple Silicon)能否支撑全栈工程师的日常?(Python3/虚拟机/Docker/Redis)
  8. Unix时间戳毫秒值解读
  9. Ethereum 入门
  10. JS逆向字体反爬,某供应商平台反爬实践