from threading import Thread
from multiprocessing import Process
g_num = 100
def work1():
global g_num
for i in range(3):
g_num+=1
print('-----in work1,g_num is %d'%(g_num))
def work2():
global g_num
for i in range(3):
g_num += 1
print('-----in work2,g_num is %d'%(g_num))
if __name__ == '__main__':
# t1 = Thread(target=work1)
# t1.start()
#
# t2 = Thread(target=work2)
# t2.start()
#由于多线程可以共享全局变量,所以g_num由原来的100变成了106
#多进程之间内存独立,不能够共享全局变量。如果通信的话,使用Queue
p1 = Process(target=work1)
p1.start()
p2 = Process(target=work2)
p2.start()
共享全局变量
最新推荐文章于 2024-07-24 19:13:29 发布
本文通过示例代码对比了多线程和多进程在Python中对全局变量g_num进行操作时的行为差异。多线程下,g_num从100增加到106,展示了线程间共享全局变量的特点;而多进程环境下,每个进程拥有独立的内存空间,因此不能直接共享全局变量,需借助Queue等机制实现进程间通信。
1036

被折叠的 条评论
为什么被折叠?



