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类参数self使用示例
Feb 17 Python
Python中unittest用法实例
Sep 25 Python
python基础之入门必看操作
Jul 26 Python
Python(Django)项目与Apache的管理交互的方法
May 16 Python
Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法
Jul 04 Python
浅析Windows 嵌入python解释器的过程
Jul 26 Python
python网络爬虫 Scrapy中selenium用法详解
Sep 28 Python
python爬虫爬取笔趣网小说网站过程图解
Nov 18 Python
在Python中预先初始化列表内容和长度的实现
Nov 28 Python
pycharm通过ssh连接远程服务器教程
Feb 12 Python
Pycharm及python安装详细步骤及PyCharm配置整理(推荐)
Jul 31 Python
Python 串口通信的实现
Sep 29 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
Zend Framework教程之分发器Zend_Controller_Dispatcher用法详解
2016/03/07 PHP
PHP使用DOM和simplexml读取xml文档的方法示例
2017/02/08 PHP
PHP计算近1年的所有月份
2017/03/13 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
php 读写json文件及修改json的方法
2018/03/07 PHP
[原创]PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】
2019/07/12 PHP
实现局部遮罩与关闭原理及代码
2013/02/04 Javascript
javascript获取鼠标位置部分的实例代码(兼容IE,FF)
2013/08/05 Javascript
jQuery队列操作方法实例
2014/06/11 Javascript
JavaScript闭包函数访问外部变量的方法
2014/08/27 Javascript
一个JavaScript处理textarea中的字符成每一行实例
2014/09/22 Javascript
jQuery无刷新分页完整实例代码
2015/10/27 Javascript
详解js中Json的语法与格式
2016/11/22 Javascript
jQuery实现的简单在线计算器功能
2017/05/11 jQuery
Easyui ueditor 整合解决不能编辑的问题(推荐)
2017/06/25 Javascript
JavaScript中正则表达式判断匹配规则及常用方法
2017/08/03 Javascript
JS点击图片弹出文件选择框并覆盖原图功能的实现代码
2017/08/25 Javascript
nodejs中art-template模板语法的引入及冲突解决方案
2017/11/07 NodeJs
解决layer图标icon不加载的问题
2019/09/04 Javascript
微信小程序录音实现功能并上传(使用node解析接收)
2020/02/26 Javascript
Python多线程编程(六):可重入锁RLock
2015/04/05 Python
Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)
2017/08/23 Python
python交互式图形编程实例(三)
2017/11/17 Python
解决python中 f.write写入中文出错的问题
2018/10/31 Python
Python 一句话生成字母表的方法
2019/01/02 Python
python 多线程重启方法
2019/02/18 Python
Python matplotlib画曲线例题解析
2020/02/07 Python
Python socket处理client连接过程解析
2020/03/18 Python
Feelunique澳大利亚:欧洲的化妆品零售电商
2019/12/18 全球购物
学前教育毕业生自荐信
2013/10/29 职场文书
狼和鹿教学反思
2014/02/05 职场文书
《钱学森》听课反思
2014/03/01 职场文书
清洁工岗位职责
2015/02/13 职场文书
运动员入场前导词
2015/07/20 职场文书
python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析
2021/04/14 Python
Pytorch可视化的几种实现方法
2021/06/10 Python