我们可以在线程类外部定义变量,并在类的方法内部全局声明它。
请参见下面的简单示例,它交替打印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 threadingimport timec = threading.Condition()flag = 0 #shared between Thread_A and Thread_Bval = 20class 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=20B: val=30A: val=20B: val=30A: val=20B: val=30A: val=20B: val=30
每个线程打印在另一个线程中修改的值。



