python多进程 主进程和子进程间共享和不共享全局变量实例


Posted in Python onApril 25, 2020

Python 多进程默认不能共享全局变量

主进程与子进程是并发执行的,进程之间默认是不能共享全局变量的(子进程不能改变主进程中全局变量的值)。

如果要共享全局变量需要用(multiprocessing.Value("d",10.0),数值)(multiprocessing.Array("i",[1,2,3,4,5]),数组)(multiprocessing.Manager().dict(),字典)(multiprocessing.Manager().list(range(5)))。

进程通信(进程之间传递数据)用进程队列(multiprocessing.Queue(),单向通信),管道( multiprocessing.Pipe() ,双向通信)。

python多进程 主进程和子进程间共享和不共享全局变量实例

import multiprocessing
import time
import os
 
datalist=['+++'] #全局变量,主进程与子进程是并发执行的,他们不能共享全局变量(子进程不能改变主进程中全局变量的值)
 
def adddata():
 global datalist
 datalist.append(1)
 datalist.append(2)
 datalist.append(3)
 print("子进程",os.getpid(),datalist)
 
 
if __name__=="__main__":
 
 p=multiprocessing.Process(target=adddata,args=())
 p.start()
 p.join()
 datalist.append("a")
 datalist.append("b")
 datalist.append("c")
 print("主进程",os.getpid(),datalist)

Python 进程之间共享数据(全局变量)

进程之间共享数据(数值型):

import multiprocessing
 
def func(num):
 num.value=10.78 #子进程改变数值的值,主进程跟着改变
 
if __name__=="__main__":
 num=multiprocessing.Value("d",10.0) # d表示数值,主进程与子进程共享这个value。(主进程与子进程都是用的同一个value)
 print(num.value)
 
 p=multiprocessing.Process(target=func,args=(num,))
 p.start()
 p.join()
 
 print(num.value)

进程之间共享数据(数组型):

import multiprocessing
 
def func(num):
 num[2]=9999 #子进程改变数组,主进程跟着改变
 
if __name__=="__main__":
 num=multiprocessing.Array("i",[1,2,3,4,5]) #主进程与子进程共享这个数组
 print(num[:])
 
 p=multiprocessing.Process(target=func,args=(num,))
 p.start() 
 p.join()
 
 print(num[:])

进程之间共享数据(dict,list):

import multiprocessing
 
def func(mydict,mylist):
 mydict["index1"]="aaaaaa" #子进程改变dict,主进程跟着改变
 mydict["index2"]="bbbbbb"
 mylist.append(11)  #子进程改变List,主进程跟着改变
 mylist.append(22)
 mylist.append(33)
 
if __name__=="__main__":
 with multiprocessing.Manager() as MG: #重命名
  mydict=multiprocessing.Manager().dict() #主进程与子进程共享这个字典
  mylist=multiprocessing.Manager().list(range(5)) #主进程与子进程共享这个List
 
  p=multiprocessing.Process(target=func,args=(mydict,mylist))
  p.start()
  p.join()
 
  print(mylist)
  print(mydict)

多线程用全局变量(global)

以上这篇python多进程 主进程和子进程间共享和不共享全局变量实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
解决python写的windows服务不能启动的问题
Apr 15 Python
python基础教程之常用运算符
Aug 29 Python
Python采用Django制作简易的知乎日报API
Aug 03 Python
浅谈django model postgres的json字段编码问题
Jan 05 Python
Python+request+unittest实现接口测试框架集成实例
Mar 16 Python
Tensorflow 查看变量的值方法
Jun 14 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
Jun 14 Python
详解python中TCP协议中的粘包问题
Mar 22 Python
PYQT5 vscode联合操作qtdesigner的方法
Mar 24 Python
Java多线程实现四种方式原理详解
Jun 02 Python
pytorch加载自己的图像数据集实例
Jul 07 Python
Django crontab定时任务模块操作方法解析
Sep 10 Python
python使用Thread的setDaemon启动后台线程教程
Apr 25 #Python
python 在threading中如何处理主进程和子线程的关系
Apr 25 #Python
Python多线程:主线程等待所有子线程结束代码
Apr 25 #Python
解决python父线程关闭后子线程不关闭问题
Apr 25 #Python
Python标准库:内置函数max(iterable, *[, key, default])说明
Apr 25 #Python
python except异常处理之后不退出,解决异常继续执行的实现
Apr 25 #Python
python 追踪except信息方式
Apr 25 #Python
You might like
星际争霸兵种名称对照表
2020/03/04 星际争霸
PHP安全技术之 实现php基本安全
2010/09/04 PHP
PHP7.0版本备注
2015/07/23 PHP
laravel实现批量更新多条记录的方法示例
2017/10/22 PHP
js判断浏览器的比较全的代码
2007/02/13 Javascript
Mootools 1.2教程 选项卡效果(Tabs)
2009/09/15 Javascript
javascript 冒泡排序 正序和倒序实现代码
2010/12/14 Javascript
《JavaScript高级程序设计》阅读笔记(一) ECMAScript基础
2012/02/27 Javascript
使用按钮控制以何种方式打开新窗口的属性介绍
2012/12/17 Javascript
js setTimeout 参数传递使用介绍
2013/08/13 Javascript
使用js完成节点的增删改复制等的操作
2014/01/02 Javascript
jQuery判断数组是否包含了指定的元素
2015/03/10 Javascript
js实现横向伸展开的二级导航菜单代码
2015/08/28 Javascript
JS组件Bootstrap实现图片轮播效果
2016/05/16 Javascript
微信小程序 网络API Websocket详解
2016/11/09 Javascript
解决前端跨域问题方案汇总
2016/11/20 Javascript
js时间戳和c#时间戳互转方法(推荐)
2017/02/15 Javascript
js实现3D图片环展示效果
2017/03/09 Javascript
基于Vuejs和Element的注册插件的编写方法
2017/07/03 Javascript
对vue.js中this.$emit的深入理解
2018/02/23 Javascript
JavaScript实现简单的文本逐字打印效果示例
2018/04/12 Javascript
微信小程序全局变量功能与用法详解
2019/01/22 Javascript
Node.js实现用户评论社区功能(体验前后端开发的乐趣)
2019/05/09 Javascript
js实现计算器功能
2020/08/10 Javascript
用python实现的线程池实例代码
2018/01/06 Python
Python基本socket通信控制操作示例
2019/01/30 Python
英国在线药房:Chemist.co.uk
2019/03/26 全球购物
历史学专业毕业生求职信
2013/09/27 职场文书
铲车司机岗位职责
2014/03/15 职场文书
党的群众路线学习材料
2014/05/16 职场文书
鼓舞士气的口号
2014/06/16 职场文书
2014最新毕业证代领委托书
2014/09/26 职场文书
干部作风建设年活动剖析材料
2014/10/23 职场文书
2015年度公共机构节能工作总结
2015/05/26 职场文书
css3带你实现3D转换效果
2022/02/24 HTML / CSS
python的列表生成式,生成器和generator对象你了解吗
2022/03/16 Python