多进程间的全局变量共享吗?一道问题引出了16+面试题,你都会吗

本文通过一道面试题探讨了多进程间全局变量不共享的现象,并解释了原因。总结了进程间如何通过Queue进行通信,强调了进程与线程的区别,并分享了相关多线程面试知识点,旨在帮助读者理解和掌握进程通信与并发概念。
摘要由CSDN通过智能技术生成

前言

最近多线程与高并发的知识点真的是相当的火呀,这不,刚刚家里的小祖宗(比我小一辈的孩子,但是岁数没差多少)在面试的时候就碰壁了,不过幸好的是他作为应届生,应该拿offer问题不大,让他碰壁的就一个问题:多进程间的全局变量共享吗?

其实是很简单的一个话题,不过,这小伙子可能当时紧张了,就没回答出来多少内容,最后抱歉的跟面试官其他的忘记了

哈哈哈哈,话不多说,直接看代码吧,这种直观的展现是我比较喜欢的

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("接收完毕...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值