python子线程共享主线程变量_Python在线程之间创建共享变量

这篇博客介绍了如何在Python中实现子线程与主线程之间的变量共享。通过示例代码展示了如何使用全局变量flag和val在Thread_A和Thread_B两个线程间交替修改并打印,从而证明了线程间的变量共享行为。
摘要由CSDN通过智能技术生成

我们可以在线程类外定义变量,并在类的方法内声明它是全局的。

请参阅下面的小例子,其中打印AB交替。两个变量flag和val在两个线程Thread_A和Thread_B之间共享。Thread_A打印val=20,然后将val设置为30。Thread_B打印val=30,因为val在Thread_A中被修改。Thread_B然后将val设置为20,这将再次用于Thread_A。这表明变量val在两个线程之间共享。同样,变量flag也在两个线程之间共享。import threading

import time

c = threading.Condition()

flag = 0 #shared between Thread_A and Thread_B

val = 20

class Thread_A(threading.Thread):

def __init__(self, name):

threading.Thread.__init__(self)

self.name = name

def run(self):

global flag

global val #made global here

while True:

c.acquire()

if flag == 0:

print "A: val=" + str(val)

time.sleep(0.1)

flag = 1

val = 30

c.notify_all()

else:

c.wait()

c.release()

class Thread_B(threading.Thread):

def __init__(self, name):

threading.Thread.__init__(self)

self.name = name

def run(self):

global flag

global val #made global here

while True:

c.acquire()

if flag == 1:

print "B: val=" + str(val)

time.sleep(0.5)

flag = 0

val = 20

c.notify_all()

else:

c.wait()

c.release()

a = Thread_A("myThread_name_A")

b = Thread_B("myThread_name_B")

b.start()

a.start()

a.join()

b.join()

输出看起来像A: val=20

B: val=30

A: val=20

B: val=30

A: val=20

B: val=30

A: val=20

B: val=30

每个线程打印在另一个线程中修改的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值