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实现将文本生成二维码的方法示例
Jul 18 Python
Python实现一个Git日志统计分析的小工具
Dec 14 Python
python linecache 处理固定格式文本数据的方法
Jan 08 Python
Djang的model创建的字段和参数详解
Jul 27 Python
python爬虫 爬取58同城上所有城市的租房信息详解
Jul 30 Python
python实现网站用户名密码自动登录功能
Aug 09 Python
简单了解Python读取大文件代码实例
Dec 18 Python
在jupyter notebook中调用.ipynb文件方式
Apr 14 Python
Django之腾讯云短信的实现
Jun 12 Python
解析python 类方法、对象方法、静态方法
Aug 15 Python
pytest fixtures装饰器的使用和如何控制用例的执行顺序
Jan 28 Python
Python常用配置文件ini、json、yaml读写总结
Jul 09 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 include的妙用,实现路径加密
2008/07/29 PHP
对淘宝URL中ID提取的PHP代码
2013/09/01 PHP
php版微信公众平台接口开发之智能回复开发教程
2016/09/22 PHP
PHP实现模拟http请求的方法分析
2017/12/20 PHP
use jscript Create a SQL Server database
2007/06/16 Javascript
实现web打印的各种方法介绍及实现代码
2013/01/09 Javascript
js判断60秒以及倒计时示例代码
2014/01/24 Javascript
JS继承用法实例分析
2015/02/05 Javascript
JavaScript数组对象实现增加一个返回随机元素的方法
2015/07/27 Javascript
requireJS使用指南
2016/04/27 Javascript
jQuery日程管理插件fullcalendar使用详解
2017/01/07 Javascript
BootStrap+Mybatis框架下实现表单提交数据重复验证
2017/03/23 Javascript
微信小程序 实现列表项滑动显示删除按钮的功能
2017/04/13 Javascript
vue中子组件传递数据给父组件的讲解
2019/01/27 Javascript
小程序使用watch监听数据变化的方法详解
2019/09/20 Javascript
vue 使用鼠标滚动加载数据的例子
2019/10/31 Javascript
python实现判断数组是否包含指定元素的方法
2015/07/15 Python
Python制作豆瓣图片的爬虫
2017/12/28 Python
python 阶乘累加和的实例
2019/02/01 Python
了解不常见但是实用的Python技巧
2019/05/23 Python
查看Python依赖包及其版本号信息的方法
2019/08/13 Python
ubuntu上安装python的实例方法
2019/09/30 Python
使用turtle绘制五角星、分形树
2019/10/06 Python
Python中使用gflags实例及原理解析
2019/12/13 Python
PyTorch 中的傅里叶卷积实现示例
2020/12/11 Python
python文件路径操作方法总结
2020/12/21 Python
详解Python中openpyxl模块基本用法
2021/02/23 Python
荷兰电脑专场:Paradigit
2018/05/05 全球购物
幼师自我鉴定范文
2013/10/01 职场文书
网游商务专员求职信
2013/10/15 职场文书
十佳大学生村官事迹
2014/01/09 职场文书
环保倡议书500字
2014/05/15 职场文书
中文专业求职信
2014/06/20 职场文书
金融专业银行实习证明模板
2014/11/28 职场文书
2019入党申请书范文3篇
2019/08/21 职场文书
利用Sharding-Jdbc进行分库分表的操作代码
2022/01/22 Java/Android