How do I share a global variable with thread?
My Python code example is:
from threading import Thread
import time
a = 0 #global variable
def thread1(threadname):
#read variable "a" modify by thread 2
def thread2(threadname):
while 1:
a += 1
time.sleep(1)
thread1 = Thread( target=thread1, args=("Thread-1", ) )
thread2 = Thread( target=thread2, args=("Thread-2", ) )
thread1.join()
thread2.join()
I don't know how to get the two threads to share one variable.
解决方案
You just need to declare a as a global in thread2, so that you aren't modifying an a that is local to that function.
def thread2(threadname):
global a
while True:
a += 1
time.sleep(1)
In thread1, you don't need to do anything special, as long as you don't try to modify the value of a (which would create a local variable that shadows the global one; use global a if you need to)>
def thread1(threadname):
#global a # Optional if you treat a as read-only
while a < 10:
print a