进程不数据共享的问题

进程不数据共享的问题

下面是一个进程之间不共享数据的例子

有个问题:不数据共享导致了全局变量输出的错误

进程创建的时候载入了哪些数据,也就是说哪些数据是需要我们创建进程时留意的


# _*_ coding:utf-8 _*_
from threading import Thread  # 导入进程
from multiprocessing import Process
import time


def plus():
    print("-------子进程1开始---------")
    global g_num  # 定义全局变量
    g_num += 50  # 全局变量值加50
    print("g_num is %d" % g_num)
    print("-------子进程1结束---------")


def minus():
    time.sleep(2)
    print("-------子进程2开始---------")
    global g_num  # 定义全局变量
    g_num -= 50  # 全局变量值减50
    print("g_num is %d" % g_num)
    print("-------子进程2结束---------")


g_num = 100  # 定义一个全局变量

if __name__ == "__main__":
    print("----------主进程开始-------------")
    print("g_num is %d" % g_num)
    t1 = Process(target=plus)  # 实例化进程t1
    t2 = Process(target=minus)  # 实例化进程t2
    t1.start()  # 开启进程t1
    t2.start()  # 开启进程t2
    t1.join()  # 等待t1进程结束
    t2.join()  # 等待t2进程结束
    print("--------主进程结束-------------")



正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小猿 2023-05-31 09:59:21

同学,你好!进程间数据是不互相共享的,全局变量等于共享一个数据这是错误的。不能用global,若想进程间数据通信可以用队列

祝学习愉快~

  • 提问者 Mr朱_ #1

    我理解错了,进程不共享数据,那么只要是数据都需要队列

    我想了解的是线程共享的数据除了全局变量以外还有什么不需要队列就能共享的数据

    2023-05-31 10:24:43
  • 好帮手慕小猿 回复 提问者 Mr朱_ #2

    同学,你好!常用的是线程锁同一时间只有一个线程可以修改数据、然后是全局变量、队列。其它就没什么了

    祝学习愉快~

    2023-05-31 11:24:59
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师