Java多进程间的全局变量共享吗
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,本篇内容主要讲解"Java多进程间的全局变量共享吗",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Java多进程间的全局变量共享吗"吧!前言问题:多进程间的
千家信息网最后更新 2025年02月01日Java多进程间的全局变量共享吗
本篇内容主要讲解"Java多进程间的全局变量共享吗",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Java多进程间的全局变量共享吗"吧!
前言
问题:多进程间的全局变量共享吗?
import multiprocessing as mul_p
import time
egg1 = 1
def write(egg2, q):
global egg1
print("write全局变量彩蛋[%s]..." % egg1)
print("write彩蛋[%s]..." % egg2)
egg1 -= 1
print("write全局变量彩蛋[%s]...原来的彩蛋[1]" % egg1)
# 将修改后的彩蛋1的值放入队列中去
q.put(egg1)
def read(egg2, q):
global egg1
print("read全局变量彩蛋[%s]..." % egg1)
print("read彩蛋[%s]..." % egg2)
while True:
# 从队列中取出 p1 子进程中的 全局变量彩蛋1 的值
egg1 = q.get()
print("read接收到的write中的全局变量彩蛋[1]的值:%d" % egg1)
if q.empty():
print("接收完毕...")
break
def main():
# 假设连个进程都需要打印下面这个彩蛋2
egg2 = 2
# ① 创建一个队列,可以不填,队列就可以很大,但有个极限,我们不去考虑它
# 如果填了数字为 x ,则这个队列可以存储 x 个数据
q = mul_p.Queue()
# ② 创建两个进程对象
p1 = mul_p.Process(target=write, args=(egg2, q,))
p2 = mul_p.Process(target=read, args=(egg2, q,))
# ③ 让两个子进程开始工作
p1.start()
# 先让主进程 休息1s 让 p1 子进程先执行完,不然两个子进程 争着执行 打印输出会乱套
time.sleep(1)
p2.start()
if __name__ == "__main__":
main()
运行结果:
write全局变量彩蛋[1]...
write彩蛋[2]...
write全局变量彩蛋[0]...原来的彩蛋[1]
read全局变量彩蛋[1]...
read彩蛋[2]...
read接收到的write中的全局变量彩蛋[1]的值:0
接收完毕...
二、总结
① 各个进程间全局变量的值是 不共享
的※:这是因为每创建一个进程就会 copy 一份原始代码(全局变量还是初值)给自己使用,所以进程间的代码是一样的,但 变量和数据是独立 的
② 各个进程间可以通过 Queue 创建的队列来传递变量,列表,字符串值(包括全局变量的值)
③ 每个进程任务里的参数,除了 全局变量(函数局部变量),其余的参数都需要通过外部实参,传入到内部形参。※:尤其是上例程的 队列 q 要作为 实参传给两个进程,这样才能实现两个进程间的通信。
③ 进程与线程之间的关系与区别:① 进程 包含 多个线程② 进程间 不共用 变量与资源;线程间 共用 变量与资源③ 使用 time.sleep() ,可以停下当前的进程,让其他进程开始工作
到此,相信大家对"Java多进程间的全局变量共享吗"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
进程
变量
全局
彩蛋
队列
两个
线程
代码
内容
参数
数据
资源
学习
原始
实用
很大
更深
之间
任务
兴趣
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
南阳标题网络技术
服务器撤销
网络安全服务机构如何认定
hp服务器ilo管理
临沂微信小程序软件开发哪家便宜
魂三服务器关闭开挂
软件开发涉密资质
平安顺车牌识别数据库怎么恢复
如何让文件存在数据库
数据库查询按时间升序
和平精英最强服务器的图片
软件开发工时测算
网络安全法全文 笔记
通过香港服务器上外网违法吗
战地5玩刀服务器
以色列本古里安大学网络安全博士
北京游刃网络技术公司
数据库计划备份
win7配置vpn服务器
截面友好数据库
与审计软件开发商沟通过程
微信软件开发费用是多少
豪情下载软件开发
通信软件开发工程
天津诚信通网络技术有限公司
网络正常但不能访问内网服务器
win服务器转发软件
服务器管理器窗口关闭
mt5交易服务器
西安交大科技创新互联网是