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 encode和decode的妙用
Sep 02 Python
python str与repr的区别
Mar 23 Python
Python urls.py的三种配置写法实例详解
Apr 28 Python
python中的句柄操作的方法示例
Jun 20 Python
python 列表推导式使用详解
Aug 29 Python
python应用文件读取与登录注册功能
Sep 23 Python
下载官网python并安装的步骤详解
Oct 12 Python
谈一谈数组拼接tf.concat()和np.concatenate()的区别
Feb 07 Python
Flask模板引擎Jinja2使用实例
Apr 23 Python
python打包生成so文件的实现
Oct 30 Python
Python实现树莓派摄像头持续录像并传送到主机的步骤
Nov 30 Python
python中常用的数据结构介绍
Jan 12 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
php5.2时间相差8小时
2007/01/15 PHP
谷歌音乐搜索栏的提示功能php修正代码
2011/05/09 PHP
php环境套包 dedeampz 伪静态设置示例
2014/03/26 PHP
PHP多维数组遍历方法(2种实现方法)
2015/12/10 PHP
一文看懂PHP进程管理器php-fpm
2020/06/01 PHP
java script编程起步(第三课)
2007/01/10 Javascript
jQuery 加上最后自己的验证
2009/11/04 Javascript
{}与function(){}选用空对象{}来存放keyValue
2012/05/23 Javascript
jQuery中outerHeight()方法用法实例
2015/01/19 Javascript
PHP+jQuery+Ajax实现多图片上传效果
2015/03/14 Javascript
AngularJS框架的ng-app指令与自动加载实现方法分析
2017/01/04 Javascript
BootstrapTable refresh 方法使用实例简单介绍
2017/02/20 Javascript
JS设计模式之单例模式(一)
2017/09/29 Javascript
vue-cli下的vuex的简单Demo图解(实现加1减1操作)
2018/02/26 Javascript
详解webpack4多入口、多页面项目构建案例
2018/05/25 Javascript
vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定
2018/09/14 Javascript
jquery实现选项卡切换代码实例
2019/05/14 jQuery
详解vue中v-bind:style效果的自定义指令
2020/01/21 Javascript
jQuery实现的分页插件完整示例
2020/05/26 jQuery
Python下使用Psyco模块优化运行速度
2015/04/05 Python
Python文件右键找不到IDLE打开项解决办法
2015/06/08 Python
对Tensorflow中的变量初始化函数详解
2018/07/27 Python
pyqt5实现登录界面的模板
2020/05/30 Python
selenium处理元素定位点击无效问题
2019/06/12 Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
2019/07/31 Python
Python 中使用 PyMySQL模块操作数据库的方法
2019/11/10 Python
Herschel Supply Co.美国:背包、手提袋及配件
2020/11/24 全球购物
员工自我鉴定范文
2013/10/06 职场文书
学校文明单位申报材料
2014/05/06 职场文书
2014最新党员批评与自我批评材料
2014/09/24 职场文书
新员工入职欢迎词
2015/01/23 职场文书
盗窃罪辩护词范文
2015/05/21 职场文书
格列佛游记读书笔记
2015/06/30 职场文书
班级管理经验交流材料
2015/11/02 职场文书
导游词之杭州岳王庙
2019/11/13 职场文书
Win11远程连接不上怎么办?Win11远程桌面用不了的解决方法
2022/08/05 数码科技