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之从格式化表达式到方法
Sep 28 Python
Python列表删除的三种方法代码分享
Oct 31 Python
python中的随机函数random的用法示例
Jan 27 Python
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
Apr 05 Python
通过Pandas读取大文件的实例
Jun 07 Python
解决pandas使用read_csv()读取文件遇到的问题
Jun 15 Python
Django web框架使用url path name详解
Apr 29 Python
python3 常见解密加密算法实例分析【base64、MD5等】
Dec 19 Python
在TensorFlow中屏蔽warning的方式
Feb 04 Python
浅谈tensorflow 中的图片读取和裁剪方式
Jun 30 Python
Django-silk性能测试工具安装及使用解析
Nov 28 Python
pytorch通过训练结果的复现设置随机种子
Jun 01 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
PHP图像处理类库MagickWand用法实例分析
2015/05/21 PHP
大家须知简单的php性能优化注意点
2016/01/04 PHP
PHP实现用户登录的案例代码
2018/05/10 PHP
innerText和innerHTML 一些问题分析
2009/05/18 Javascript
JQuery UI皮肤定制
2009/07/27 Javascript
Jquery attr("checked") 返回checked或undefined 获取选中失效
2013/10/10 Javascript
javascript文件中引用依赖的js文件的方法
2014/03/17 Javascript
Javascript中实现trim()函数的两种方法
2015/02/04 Javascript
JS实现仿雅虎首页快捷登录入口及导航模块效果
2015/09/19 Javascript
微信小程序开发之入门实例教程篇
2017/03/07 Javascript
关于react-router的几种配置方式详解
2017/07/24 Javascript
详解如何让InstantClick兼容MathJax、百度统计等
2017/09/12 Javascript
webstorm中vue语法的支持详解
2018/05/09 Javascript
Babel 入门教程学习笔记
2018/06/13 Javascript
详解如何用typescript开发koa2的二三事
2018/11/13 Javascript
微信小程序websocket实现即时聊天功能
2019/05/21 Javascript
Vue项目实现简单的权限控制管理功能
2019/07/17 Javascript
Python全局变量操作详解
2015/04/14 Python
python模拟enum枚举类型的方法小结
2015/04/30 Python
使用Python对Csv文件操作实例代码
2017/05/12 Python
python通过paramiko复制远程文件及文件目录到本地
2019/04/30 Python
Myprotein比利时官方网站:欧洲第一运动营养品牌
2020/10/04 全球购物
怎么可以提高数据库查询数据的速度
2014/06/28 面试题
诺思信科技(南京)有限公司.NET笔试题答案
2013/07/06 面试题
StringBuilder和String的区别
2015/05/18 面试题
幼儿教师国培感言
2014/02/19 职场文书
项目合作协议书
2014/04/16 职场文书
岗位明星事迹材料
2014/05/18 职场文书
德育标兵事迹材料
2014/08/24 职场文书
大学生逃课检讨书
2015/05/04 职场文书
2016秋季运动会开幕词
2016/03/04 职场文书
毕业生的自我鉴定表范文
2019/05/16 职场文书
餐饮行业关注的9大营销策略
2019/08/26 职场文书
SpringBoot实现quartz定时任务可视化管理功能
2021/08/30 Java/Android
Python爬虫网络请求之代理服务器和动态Cookies
2022/04/12 Python
详解Nginx的超时keeplive_timeout配置步骤
2022/05/25 Servers