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 实现文件的全备份和差异备份详解
Dec 27 Python
python安装numpy&安装matplotlib& scipy的教程
Nov 02 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
Feb 23 Python
python奇偶行分开存储实现代码
Mar 19 Python
Python实现统计英文文章词频的方法分析
Jan 28 Python
对DataFrame数据中的重复行,利用groupby累加合并的方法详解
Jan 30 Python
Python 中list ,set,dict的大规模查找效率对比详解
Oct 11 Python
Python浮点数四舍五入问题的分析与解决方法
Nov 19 Python
浅谈python已知元素,获取元素索引(numpy,pandas)
Nov 26 Python
Python 解决OPEN读文件报错 ,路径以及r的问题
Dec 19 Python
win10下opencv-python特定版本手动安装与pip自动安装教程
Mar 05 Python
聊一聊python常用的编程模块
May 14 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中使用Oracle数据库(1)
2006/10/09 PHP
基于mysql的论坛(5)
2006/10/09 PHP
php 数组的创建、调用和更新实现代码
2009/03/09 PHP
ThinkPHP3.2.2的插件控制器功能
2015/03/05 PHP
深入探究PHP的多进程编程方法
2015/08/18 PHP
php面向对象基础详解【星际争霸游戏案例】
2020/01/23 PHP
javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
2010/03/08 Javascript
用jQuery打造TabPanel效果代码
2010/05/22 Javascript
js数组的操作详解
2013/03/27 Javascript
jQuery中校验时间格式的正则表达式小结
2013/09/22 Javascript
由简入繁实现Jquery树状结构的方法(推荐)
2016/06/10 Javascript
jquery设置表单元素为不可用的简单代码
2016/07/04 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
2016/08/29 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(上)
2017/04/21 Javascript
vue快捷键与基础指令详解
2017/06/01 Javascript
Node.js自定义实现文件路由功能
2017/09/22 Javascript
解决layui 复选框等内置控件不显示的问题
2018/08/14 Javascript
JavaScript强制类型转换和隐式类型转换操作示例
2019/05/01 Javascript
Elasticsearch实现复合查询高亮结果功能
2019/09/10 Javascript
基于JavaScript实现十五拼图代码实例
2020/04/26 Javascript
python 文件和路径操作函数小结
2009/11/23 Python
pytyon 带有重复的全排列
2013/08/13 Python
python中学习K-Means和图片压缩
2017/11/20 Python
python中open函数的基本用法示例
2019/09/07 Python
Flask和pyecharts实现动态数据可视化
2020/02/26 Python
Python openpyxl 插入折线图实例
2020/04/17 Python
利用Python实现斐波那契数列的方法实例
2020/07/26 Python
python爬虫用scrapy获取影片的实例分析
2020/11/23 Python
突袭HTML5之Javascript API扩展1—Web Worker异步执行及相关概述
2013/01/31 HTML / CSS
使用phonegap播放音频的实现方法
2017/03/31 HTML / CSS
英国体育器材进口商店:UK Sport Imports
2017/03/14 全球购物
个性化皮包、小袋、生活配件:Mon Purse
2019/03/26 全球购物
优秀教师演讲稿
2014/05/06 职场文书
贷款承诺书
2015/01/20 职场文书
锅炉工岗位职责
2015/02/13 职场文书
关于感恩的歌曲整理(8首)
2019/08/14 职场文书