进程的其他方法

P = Process(target=f,)

P.Pid 查看进程号  查看进程的名字p.name

P.is_alive()  返回一个true或者False

P.terminate()  给操作系统发送一个结束进程的信号

验证进程之间是空间隔离的

from multiprocessing import Processnum = 100def f1():global numnum = 3print(num)  # 结果 3if __name__ == '__main__':p = Process(target=f1,)p.start()p.join()print(num)  # 结果 100

守护进程

主进程的代码运行完毕设置为守护进程的子进程会随之结束

P.daemon = True

import time
from multiprocessing import Processdef f1():time.sleep(3)print('xxxx')def f2():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()

import time
from multiprocessing import Process,Manager,Lockdef f1(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 in p_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()

用队列实现消费者生产者模型 : 缓冲用,解耦用的,

import time
from multiprocessing import Process,Queue,JoinableQueue#生产者
def producer(q):for i in range(10):time.sleep(0.2)s = '大包子%s号'%iprint(s+'新鲜出炉')q.put(s)q.join() #就等着task_done()信号的数量,和我put进去的数量相同时,才继续执行print('所有的任务都被处理了')
#消费者
def consumer(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 = Truecon_p.start()pro_p.join()print('主进程结束')

转载于:https://www.cnblogs.com/fu-1111/p/10252253.html

python并发编程之进程1(守护进程,进程锁,进程队列)相关推荐

  1. Python并发编程:多线程-死锁现象与递归锁

    一 死锁现象 所谓死锁:是指两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待 ...

  2. python并发编程之semaphore(信号量)_浅谈Python并发编程之进程(守护进程、锁、信号量)...

    前言:本博文是对Python并发编程之进程的知识延伸,主要讲解:守护进程.锁.信号量. 友情链接: 一.守护进程(daemon) 1.1 守护进程概念 首先我们都知道:正常情况下,主进程默认等待子进程 ...

  3. 《转载》Python并发编程之线程池/进程池--concurrent.futures模块

    本文转载自 Python并发编程之线程池/进程池--concurrent.futures模块 一.关于concurrent.futures模块 Python标准库为我们提供了threading和mul ...

  4. Python并发编程之线程池/进程池

    引言 Python标准库为我们提供了threading和multiprocessing模块编写相应的多线程/多进程代码,但是当项目达到一定的规模,频繁创建/销毁进程或者线程是非常消耗资源的,这个时候我 ...

  5. Python并发编程之进程池

    Python并发编程之进程池 一.进程池简介 二.进程池代码实例 一.进程池简介 可以用Pool类来创建进程池,可以把各种数据处理任务都提交给进程池.进程池提供的功能有点类似于列表解析和功能性编程操作 ...

  6. python 并发编程 多线程 目录

    线程理论 python 并发编程 多线程 开启线程的两种方式 python 并发编程 多线程与多进程的区别 python 并发编程 多线程 Thread对象的其他属性或方法 python 并发编程 多 ...

  7. python 并发编程 多进程 目录

    python multiprocessing模块 介绍 python 开启进程两种方法 python 并发编程 查看进程的id pid与父进程id ppid python 并发编程 多进程 Proce ...

  8. Python并发编程系列之多进程(multiprocessing)

    1 引言 本篇博文主要对Python中并发编程中的多进程相关内容展开详细介绍,Python进程主要在multiprocessing模块中,本博文以multiprocessing种Process类为中心 ...

  9. Python并发编程系列之多线程

    1 引言 上一篇博文详细总结了Python进程的用法,这一篇博文来所以说Python中线程的用法.实际上,程序的运行都是以线程为基本单位的,每一个进程中都至少有一个线程(主线程),线程又可以创建子线程 ...

  10. 深入浅出讲解Python并发编程

    微信公众号:运维开发故事,作者:素心 Python并发编程 本文比较长,绕的也比较快,需要慢慢跟着敲代码并亲自运行一遍,并发编程本身来说就是编程里面最为抽象的概念,单纯的理论确实很枯燥,但这是基础,基 ...

最新文章

  1. linux 重新分区挂载,Linux:挂载磁盘分区,linux已挂载磁盘重新分区
  2. Windows2008 R2下,DCOM配置里的属性灰色不可用的解决方法
  3. Spring Boot项目整合Retrofit最佳实践,最优雅的HTTP客户端工具!
  4. Java笔记:包装类、toString()方法、单例类、比较(==和equals方法)
  5. python编程求导数_面向对象编程 —— java实现函数求导
  6. 养老不用愁,这种机器人可以让老年人自主地进行日常生活
  7. 入门 | egg.js 入门之egg-jwt
  8. 上汽通用五菱与菜鸟合作数字供应链 一期整车数字物流系统正式启用
  9. 计算整数的二进制中包含1的数量
  10. JS中innerHTML 和innerText和value的区别
  11. time datetime
  12. 【实习之T100开发】帆软报表笔记
  13. 使用FlashBoot3.2c 将 U 盘制作成 DOS 启动盘
  14. Ubuntu安装网络打印机
  15. zend新建php项目,Zend Studio使用教程:创建PHP文件的三种方式
  16. 【低功耗蓝牙】③ 蓝牙服务和特性的创建
  17. sql java web动态曲线图_使用Echarts实现动态曲线图表
  18. AI Earth ——开发者模式案例8:利用Landsat-8数据进行地表温度反演
  19. 【贪心算法】加勒比海盗船——最优装载问题
  20. win10 Microsoft Edge浏览器崩溃, Microsoft Edge 提示 网页无限次打开,直至电脑卡死

热门文章

  1. pythoncharm怎么保存_pycharm软件实现设置自动保存操作
  2. 修改GitHub Pages个人主页的域名
  3. 消息队列mq的原理及实现方法
  4. android通知栏屏蔽访客模式
  5. 易优cms响应式网站模板,EyouCMS网络科技公司网站模板
  6. css定义变量(定义:--aa;使用:var(--aa)、calc()计算样式函数
  7. F28335 ePWM模块简介——TMS320F28335学习笔记(四)
  8. 有道云笔记客户端收起左侧目录边栏方法
  9. Scala入门_开发环境安装
  10. python 腾讯视频签到_腾讯视频签到函数/网页2次签到