Using a global variable with a thread

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

From: stackoverflow.com/q/19790570

Back to homepage or read more recommendations: