今日怼人金句“OMG,你何时有这样高尚的想法了”(一般怼和你谈道德、良心的人)

先说什么是进程,进程按照笔者的理解就是空间+任务不对记得指正笔者,比如有一个公司(进程)里有员工在做不同的事(线程)。
好啦概念了,我们先说要用的包multiprocessing,记得要和线程的threading进行区分,笔者认为(可能也是笔者接触的比较浅 的缘故)
先来基本使用

简单的进程

import multiprocessing#导入多进程包,
import os#为了体现出多进程引入os包,
def work(num):for n  in range(num):print('work1',n)print(multiprocessing.current_process().pid)#current_process获取当前进程方法,pid为id号print(os.getppid())#返回父进程的id
if __name__ == '__main__':t1 = multiprocessing.Process(target=work,args=(999,))t1.start()print(os.getppid())#返回父进程的id

是不是和threading的用法很像?
附两张Process和Thread函数的初始化init方法的图吧,注意看传入值,和值的类型

Process

Thread


接下来我们来说一下多线程之间如何进行数据共享,不过进程中不共享全局变量,我们怎么办呢?我们克隆数据不就好了吗!(机智)我们将数据复制(克隆)后传递到B进程中,那么我们如何实现它呢?我们学习一个新的方法Queue方法

Queue方法

我们先来看代码

import multiprocessing
def puts(queue):queue.put("今天又是丧丧的一天呢")#简单的理解为put传入数据
if __name__ == '__main__':queue = multiprocessing.Queue(maxsize=10)#Queue方法设置最大传输字节数,maxsize可以不加,但是括号里一定要写数值否则无法实现for n in range(5):t1 = multiprocessing.Process(target=puts,args=(queue,))t1.start()t1.join()print(queue.get())#接收传入值,如果get后无()则输出地址

首先,一定要在程序运行前声明引用该方法。
Queue方法括号里为最大传输字节数,如果不写程序不会报错默认限制为-1,笔者理解为默认传输字节数(所以大家最好还是设定值)
get后如果没有()则接收地址,有()则接收数据
那么就又有问题了,假如要传输put大于maxsize呢?怎么办?这时就用到了timeout

Queue方法中的timeout

timeout设置了接收时间,如果时间到了还没有接收到则停止上一接收(get)将空间给此get运行。
看代码吧

import multiprocessing
if __name__ == '__main__':queue = multiprocessing.Queue(maxsize=3)#进程之间的通信,maxsize=最大传输数# 向队列里面放入消息queue.put('hello')queue.put(1)queue.put([1,2,3])# queue.put({'a':1},timeout=0.1)print(queue)print(queue.get())print(queue.get())print(queue.get())print(queue.get(timeout=1))#注意添加位置,这样会报一个错误,我们可以抓取错误,然后执行我们想要的。

注意添加位置,这样会报一个错误,我们可以抓取错误,然后执行我们想要的 。
错误

附另一个实例
实例:

import multiprocessing
# 写数据任务
def write(queue):for i in range(10):if queue.full():print('已经满员,不能再存')breakqueue.put(i)
# 读取任务
def read(queue):while True:if queue.empty():print('没有值啦')breakprint(queue.get())
if __name__ == '__main__':queue = multiprocessing.Queue(5)t1 = multiprocessing.Process(target=write,args=(queue,))t2 = multiprocessing.Process(target=read,args=(queue,))t1.start()t1.join()t2.start()

Python中的多进程创建和传值(克隆)Queue方法相关推荐

  1. Python 中的多进程(进程之间的通信)

    文章目录 在进程之间共享数据 共享内存 服务器进程 进程之间的通信 队列 管道 这篇文章将会讲解在 Python 中使用 多进程模块时在进程之间共享数据和消息传递的概念. 在多处理中,任何新创建的进程 ...

  2. python多线程好还是多协程好_深入浅析python中的多进程、多线程、协程

    进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源的管理和分配.任务的调度. ...

  3. Python中使用PyQt5创建的窗口添加全局快捷键(鼠标离开窗口时也可执行)

    Python中使用PyQt5创建的窗口添加全局快捷键 使用第三方库SystemHotKey来实现全局快捷键 库的安装 pip3 install system_hotkey 官方案例 from syst ...

  4. python 读取图片转换为一维向量_对Python中一维向量和一维向量转置相乘的方法详解...

    对Python中一维向量和一维向量转置相乘的方法详解 在Python中有时会碰到需要一个一维列向量(n*1)与另一个一维列向量(n*1)的转置(1*n)相乘,得到一个n*n的矩阵的情况.但是在pyth ...

  5. python中用于释放类占用的资源的方法是()_编写一个简易计算器,要求根据输入的数字和四则运算符号,计算运算结果并输出。_学小易找答案...

    [简答题]20191220 课前作业 新工作页4.1的3-5-3页的填空题,参考教材P135-P144 [简答题]AutoCAD改编视图,尽量不用虚线 1. 主视图采用局部剖,表达右上角小圆筒(及孔) ...

  6. python字符串拼接数字_解决Python中字符串和数字拼接报错的方法

    解决Python中字符串和数字拼接报错的方法 前言 众所周知Python不像JS或者PHP这种弱类型语言里在字符串连接时会自动转换类型,如果直接将字符串和数字拼接会直接报错. 如以下的代码: # co ...

  7. Python中利用BBP方式和蒙卡罗特方法求出π值(以及运用函数进行选择方式解决问题)

    Python中利用BBP方式和蒙卡罗特方法求出π值 一 BBP方式 二 蒙卡罗特方法 三 要求用户可以进行选择方法,之后调用对应函数进行执行 一 BBP方式 所谓BBP方式就是利用下面所给数学计算公式 ...

  8. python自带编辑器如何海龟作图_使用Python中的高级turtle(海龟)作图方法

    在Python里,海龟不仅可以画简单的黑线,还可以用它画更复杂的几何图形,用不同的颜色,甚至还可以给形状填色. 一.从基本的正方形开始 引入turtle模块并创建Pen对象: >>> ...

  9. 第7.26节 Python中的@property装饰器定义属性访问方法getter、setter、deleter 详解

    第7.26节 Python中的@property装饰器定义属性访问方法getter.setter.deleter 详解 一.    引言 Python中的装饰器在前面接触过,老猿还没有深入展开介绍装饰 ...

最新文章

  1. 小程序十一:网络请求
  2. 易语言 基础知识一及认识句柄 局部变量
  3. View - RemoteViews
  4. 【Python】快速设置 pip 源
  5. SAP Kyma和SAP云平台上的Service instance
  6. 文本字段和表单设计-UI组件系列
  7. 物联网技术系列之3分钟了解无线MESH网络
  8. python中request方法_如何使用python语言中的request模块获取代码
  9. 写入Visual Studio的输出窗口
  10. 交换机 Telnet远程登录配置
  11. 制作Camtasia 2020击键标记动画
  12. pd虚拟机 17+win10、11懒人镜像 Mac
  13. 统计/var/log/下有多少文件
  14. Text Scanner for Mac(超快速ocr文字识别软件)
  15. java 清理页面缓存数据_清除浏览器缓存的几种方法总结(必看)
  16. 魔百盒CM201-2_YS(易视腾代工)_MV300/300H芯片_蓝牙语音版_卡刷通刷_刷机固件
  17. GNU和GPL是什么?
  18. Python软件编程等级考试二级——20210314
  19. QMenu 设置菜单图标 生成菜单树
  20. 海尔微型计算机一键还原怎么操作,电脑的一键还原在哪_电脑一键还原详细教程_电脑一键还原怎么操作...

热门文章

  1. python3 批量修改文件扩展名——递归
  2. 水滴石穿之页面遮罩层实现、向window.open()打开的窗口POST数据
  3. Serverless 实战 —— 快速搭建 SpringBoot 应用
  4. 面试精讲之面试考点及大厂真题 - 分布式专栏 22 分布式系统下调用链追踪技术
  5. 文档转换乱码异常解决:unoconv openoffice libreoffice
  6. Java项目构建管理Maven的安装与配置
  7. Promise.all 处理error
  8. react-native构建基本页面5---调用拍照摄像头
  9. 【JAVA 第三章 流程控制语句】课后习题 判断用户输入的数是否为质数
  10. C#LeetCode刷题之#225-用队列实现栈(Implement Stack using Queues)