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中__init__.py文件的作用详解
Sep 18 Python
Python解析excel文件存入sqlite数据库的方法
Nov 15 Python
Python实现 多进程导入CSV数据到 MySQL
Feb 26 Python
python实现生命游戏的示例代码(Game of Life)
Jan 24 Python
使用实现pandas读取csv文件指定的前几行
Apr 20 Python
pyspark 读取csv文件创建DataFrame的两种方法
Jun 07 Python
python去掉 unicode 字符串前面的u方法
Oct 21 Python
python3实现zabbix告警推送钉钉的示例
Feb 20 Python
pycharm新建一个python工程步骤
Jul 16 Python
Python操作qml对象过程详解
Sep 26 Python
pycharm内无法import已安装的模块问题解决
Feb 12 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
Dec 24 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
漫威DC即将合作联动,而双方早已经秘密开始
2020/04/09 欧美动漫
PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
2009/10/11 PHP
Array of country list in PHP with Zend Framework
2011/10/17 PHP
PHP中::、->、self、$this几种操作符的区别介绍
2013/04/24 PHP
yii2.0实现验证用户名与邮箱功能
2015/12/22 PHP
yii框架使用分页的方法分析
2019/07/25 PHP
jquery 仿QQ校友的DIV模拟窗口效果源码
2010/03/24 Javascript
jquery ajax,ashx,json的用法总结
2014/02/12 Javascript
JavaScript组件焦点与页内锚点间传值的方法
2015/02/02 Javascript
AngularJS指令与指令之间的交互功能示例
2016/12/14 Javascript
详解jQuery的表单验证插件--Validation
2016/12/21 Javascript
Javascript之深入浅出prototype
2017/02/06 Javascript
Vue 仿百度搜索功能实现代码
2017/02/16 Javascript
使用gulp搭建本地服务器并实现模拟ajax
2017/04/05 Javascript
对于Javascript 执行上下文的全面了解
2017/09/05 Javascript
vuejs2.0运用原生js实现简单拖拽元素功能
2020/08/21 Javascript
JS实现“全选”和"全不选"功能代码实例
2020/02/06 Javascript
[12:29]《一刀刀一天》之DOTA全时刻19:蝙蝠骑士田伯光再度不举
2014/06/10 DOTA
[04:04]DOTA2亚洲邀请赛比赛场馆&酒店全攻略
2017/03/23 DOTA
Python ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
2014/06/10 Python
简单介绍Python中的几种数据类型
2016/01/02 Python
浅谈插入排序算法在Python程序中的实现及简单改进
2016/05/04 Python
python3实现TCP协议的简单服务器和客户端案例(分享)
2017/06/14 Python
python3 打印输出字典中特定的某个key的方法示例
2019/07/06 Python
Python使用mongodb保存爬取豆瓣电影的数据过程解析
2019/08/14 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
2020/02/04 Python
HTML5之SVG 2D入门10—滤镜的定义及使用
2013/01/30 HTML / CSS
加拿大休闲和工业服装和鞋类零售商:L’Équipeur
2018/01/12 全球购物
Luxplus丹麦:香水和个人护理折扣
2018/04/23 全球购物
Agoda中文官网:安可达(低价预订全球酒店)
2021/01/18 全球购物
寻找迷宫的一条出路,o通路;X:障碍
2016/07/10 面试题
闭幕式主持词
2014/04/02 职场文书
以幸福为主题的活动方案
2014/08/22 职场文书
单位租房协议范本
2014/12/03 职场文书
古诗之感恩老师
2019/10/24 职场文书
windows11怎么查看自己安装的版本号? win11版本号的查看方法
2021/11/21 数码科技