mutilprocess用法

导入Process类

使用Process类生成对象

调用对象的方法

start()

开启子进程

join()

等待这个子进程结束再执行下面的代码

pid与ppid

查看pid

  • 导入current_process

    • current_process().pid
  • 查看子进程的pid属性
    • p.pid
  • 导入os
    • os.get_pid()

查看ppid

  • 导入os

    • os.get_ppid()

os的方法在任意进程都可以查看当前进程和父进程pid

守护进程

process(daemon= true)

当父进程的最后一行代码结束时,守护进程不管执行到什么地方都会结束

PS:是父进程的代码最后一行,而不是父进程的程序运行完的时候

terminate()

向操作系统发送中断程序的指令

is_alived

返回值是bool类型

判断进程是否还在运行

name

查看进程的名字

一般是Process-1[-2,]之类的,无意义

JoinableQueue

与Queue的不同之处就在多了一个join方法

认识join方法

  • 每拿出一个数据时调用一次task_done()方法
  • 如果当前队列中还有数据时
  • join就会阻塞在这里,直到队列里的数据被清空,程序才会继续执行

生产者消费者模型

from multiprocessing import  Queue,Processdef producer(q,food,name):for i in range(10):res = f"{name}生产{food},编号:{i}"q.put(res)print(res)q.put('')def consumer(q,name):while True:res = q.get()if not res :breakprint(f"{name}吃了{res}")if __name__ == '__main__':q = Queue(5)p1 = Process(target=producer,args=(q,'cake','mark'))p2 = Process(target=producer,args=(q,'mike','nick'))c1 = Process(target=consumer,args=(q,'jiangheng'))c2 = Process(target=consumer,args=(q,'yanzhibing'))c3 = Process(target=consumer,args=(q,'yanzhibing'))p1.start()p2.start()c1.start()c2.start()q.put(None)c3.start()

生产者

  • 生产数据

缓冲区

  • 生产者将数据放入缓冲区,
    消费者将数据从缓冲区取出

消费者

  • 处理数据

优点

  • 解耦
  • 支持并发
  • 支持忙闲不均
  • 生产者消费者模型,大大提高了生产者的生产效率,也大大提高了消费者的消费效率.

队列

管道+锁

  • 管道:底层基于内存共享
  • 锁:进程锁

q=Queue(n)

  • 生成队列对象,设置队列大小

q.put()

  • 将任意数据类型放入

q.get()

  • 将队列中的第一个数据取出

put/get的默认参数

  • block

    • 默认为true

      • 当队列满了,再put就会进入等待状态
      • 当队列空了,再get就会进入等待状态
    • 当为False时
      • 当队列满了,再put就会抛错
      • 当队列空了,再get就会抛错
  • timeout
    • 只有当block为True时,才有意义
    • 设置等待状态所持续的时间,
      超出时间一样会报错

进程锁

from multiprocessing import Lock

  • 导入Lock

lock = Lock()

  • 定义锁对象

lock.acquire()

  • 为你的某一部分代码上锁
  • 注意的是,当这把锁上锁时,其他进程无法运行这部分的代码

lock.release()

  • 解锁
  • 只有解锁后,其他进程才可以抢到这把锁来继续运行自己的代码

注意:在多进程是要确保多个进程使用的是同一把锁

XMind: ZEN - Trial Version

转载于:https://www.cnblogs.com/marklijian/p/11575103.html

mutilprocess模块的用法相关推荐

  1. python的config模块_python中ConfigParse模块的用法

    本文实例讲述了python中configparse模块的用法,分享给大家供大家参考.具体方法如下: 写配置一般用configparse.rawconfigparse类 读配置用configparse. ...

  2. python中config方法作用,python中ConfigParse模块的用法

    本文实例讲述了python中ConfigParse模块的用法,分享给大家供大家参考.具体方法如下: 写配置一般用ConfigParse.RawConfigParse类 读配置用ConfigParse. ...

  3. python中heapq的库是什么_详解Python中heapq模块的用法

    详解Python中heapq模块的用法 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  详解Python中heapq模块的用法.txt ] (友情提示:右键点上行t ...

  4. python中heapq的库是什么_Python中heapq模块的用法

    heapq 模块提供了堆算法.heapq是一种子节点和父节点排序的树形数据结构.这个模块提供heap[k] <= heap[2*k+1] and heap[k] <= heap[2*k+2 ...

  5. 【Python】pathlib 模块的用法(Path)

    [Python]pathlib 模块的用法 文章目录 [Python]pathlib 模块的用法 1. 介绍 2. 举例 2.1 获取目录 2.2 目录拼接 2.3 创建.删除目录 2.4 读写文件 ...

  6. et200s模块接线图讲解_【图】ET200S热电偶模块的用法举例

    ET200S热电偶模块的用法 在ET200S的热电偶模块使用中,冷端补偿去哪儿了? 客户使用ET200S的热电偶模块(6ES7134-4JB01-0AB0),发现其读值不准,首先确认客户所使用的冷端补 ...

  7. python 彩票排列组合_对福彩3D号码进行排列组合为例学习Python的itertools模块的用法...

    这里我们以对福彩3D号码进行排列组合为例学习Python的itertools模块的用法.首先我们选择心仪的号码.比如我们选择4,5,7,8 第一种我们只要组六的组合.代码如下 import itert ...

  8. python中的statistics_Python统计分析模块statistics用法示例

    本文实例讲述了Python统计分析模块statistics用法.分享给大家供大家参考,具体如下: 一 计算平均数函数mean() >>>import statistics >& ...

  9. python traceback 丢失_Python异常模块traceback用法实例分析

    本文实例讲述了python异常模块traceback用法.分享给大家供大家参考,具体如下: traceback模块被用来跟踪异常返回信息. 如下例所示: import traceback try: r ...

最新文章

  1. c++ vector最大值_第14章 火柴人的无尽冒险(《C和C++游戏趣味编程》配套教学视频)...
  2. GitHub万星NLP资源大升级:实现Pytorch和TF深度互操作,集成32个最新预训练模型...
  3. Gauss-Newton算法学习
  4. 经典C语言程序100例之九三
  5. JS----JavaScript数组去重(12种方法,史上最全)
  6. java线程基础知识
  7. Day03『NLP打卡营』实践课3:使用预训练模型实现快递单信息抽取
  8. Creative Coding创意+技术的世界
  9. 通过配置ant提高EJB开发效率
  10. jtag接口定义 jtag接口的主要作用是什么
  11. Linux学习总结(62)——什么是堡垒机?为什么需要堡垒机?
  12. 边境的悍匪—机器学习实战:第八章 降维
  13. 机器学习D14——随机森林
  14. java pv uv_什么是pv和uv?
  15. 项目成功部署到idea ,并且成功运行,访问却是404
  16. 高大上:光学技术“回归”地球整出“彩虹车站”
  17. Hexo建站总结 Github静态网页
  18. 香港股市api调用代码返回示例
  19. 给媳妇做一个记录心情的小程序
  20. 基于stm32的两轮自平衡小车1(模块选型篇)

热门文章

  1. 棋盘问题 POJ - 1321
  2. 兄弟连 企业shell笔试题 16-31
  3. bzoj 4001 [TJOI2015]概率论 数学
  4. Shell中字符串、数值的比较
  5. 追求极致速度,极简多模态预训练模型ViLT,推理速度比UNITER快60倍!(ICML2021)...
  6. SimVLM:拒绝各种花里胡哨!CMUGoogle提出弱监督极简VLP模型,在多个多模态任务上性能SOTA...
  7. 同济大学土木工程学院招收2名秋季入学全日制博士生
  8. csv文件转换成html,jQuery 把CSV文件数据转换为HTML表格(Bootstrap Table)
  9. mysql killed状态连接_MySQL: kill connection的实现简析
  10. 对于0基础来说,Python 中有哪些难以理解的概念?我似乎明白了