1. ホーム
  2. python

[解決済み] スレッドでグローバル変数を使用する

2022-11-25 14:40:45

質問

スレッドでグローバル変数を共有するには?

私のPythonのコード例です。

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()

2つのスレッドで1つの変数を共有させる方法がわかりません。

どのように解決するのですか?

以下のように a をグローバルとして thread2 を変更しないようにするためです。 a を変更しないようにします。

def thread2(threadname):
    global a
    while True:
        a += 1
        time.sleep(1)

thread1 の値を変更しようとしない限り、特別なことをする必要はありません。 a の値を変更しようとしない限り、特別なことは必要ありません (これは、グローバル変数の影となるローカル変数を作ることになります。 global a を使用します)。

def thread1(threadname):
    #global a       # Optional if you treat a as read-only
    while a < 10:
        print a