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 相关文章推荐
SublimeText 2编译python出错的解决方法(The system cannot find the file specified)
Nov 27 Python
分析Python的Django框架的运行方式及处理流程
Apr 08 Python
详解Python中最难理解的点-装饰器
Apr 03 Python
对python 命令的-u参数详解
Dec 03 Python
浅谈Python 敏感词过滤的实现
Aug 15 Python
Python:slice与indices的用法
Nov 25 Python
PyQT5 emit 和 connect的用法详解
Dec 13 Python
Python字典深浅拷贝与循环方式方法详解
Feb 09 Python
python字符串,元组,列表,字典互转代码实例详解
Feb 14 Python
python读取当前目录下的CSV文件数据
Mar 11 Python
django xadmin中form_layout添加字段显示方式
Mar 30 Python
python 爬取天气网卫星图片
Jun 07 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人民币金额数字转中文大写的函数代码
2013/02/27 PHP
探讨PHP调用时间格式的参数详解
2013/06/06 PHP
jquery 问答知识整理
2010/02/11 Javascript
Jquery 实现Tab效果 思路是js思路
2010/03/02 Javascript
JavaScript 高效运行代码分析
2010/03/18 Javascript
利用javascript判断文件是否存在
2013/12/31 Javascript
JS+CSS实现Div弹出窗口同时背景变暗的方法
2015/03/04 Javascript
axios学习教程全攻略
2017/03/26 Javascript
Angular.js实现动态加载组件详解
2017/05/28 Javascript
详解tween.js的使用教程
2017/09/14 Javascript
XMLHttpRequest对象_Ajax异步请求重点(推荐)
2017/09/28 Javascript
详解vue项目打包后通过百度的BAE发布到网上的流程
2018/03/05 Javascript
使用Vue.js开发微信小程序开源框架mpvue解析
2018/03/20 Javascript
webpack手动配置React开发环境的步骤
2018/07/02 Javascript
es6 for循环中let和var区别详解
2020/01/12 Javascript
JavaScript Window浏览器对象模型原理解析
2020/05/30 Javascript
JavaScript中数组去重的5种方法
2020/07/04 Javascript
[00:09]DOTA2新版本PA至宝特效动作展示
2014/11/19 DOTA
[55:32]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第二场
2018/04/05 DOTA
[01:16]DOTA2小知识课堂 Ep.03 芒果树无伤肉山
2019/12/05 DOTA
Python中的exec、eval使用实例
2014/09/23 Python
python实现带验证码网站的自动登陆实现代码
2015/01/12 Python
python实现定时同步本机与北京时间的方法
2015/03/24 Python
python实现kMeans算法
2017/12/21 Python
Python OpenCV读取png图像转成jpg图像存储的方法
2018/10/28 Python
pandas的to_datetime时间转换使用及学习心得
2019/08/11 Python
Python 格式化打印json数据方法(展开状态)
2020/02/27 Python
pycharm开发一个简单界面和通用mvc模板(操作方法图解)
2020/05/27 Python
python可以用哪些数据库
2020/06/22 Python
怎样在 Applet 中建立自己的菜单(MenuBar/Menu)?
2012/06/20 面试题
写好自荐信的要点
2013/11/06 职场文书
公司员工活动策划方案
2014/08/20 职场文书
无犯罪记录证明范本
2014/09/15 职场文书
大学体育课感想
2015/08/10 职场文书
《迟到》教学反思
2016/02/24 职场文书
python pygame 开发五子棋双人对弈
2022/05/02 Python