threading.localコードノート
1422 ワード
ローカル変数の表示
テストグローバル変数の使用
threading.localの導入
グローバル変数をスレッドのローカル変数に変換
threading.localがスレッドにまたがらない問題のデモ
import threading
import time
def worker():
x = 0
for i in range(100):
time.sleep(0.0001)
x += 1
print(threading.current_thread(), x)
for i in range(3):
threading.Thread(target=worker).start()
テストグローバル変数の使用
class A:
def __init__(self):
self.x = 0
def worker():
global_data.x = 0
for i in range(100):
time.sleep(0.0001)
global_data.x += 1
print(threading.current_thread(), global_data.x)
for i in range(3):
threading.Thread(target=worker).start()
#
threading.localの導入
グローバル変数をスレッドのローカル変数に変換
global_data = threading.local()
def worker():
global_data.x = 0
for i in range(100):
time.sleep(0.0001)
# x += 1
global_data.x += 1
print(threading.current_thread(), global_data.x)
for i in range(3):
threading.Thread(target=worker).start()
threading.localがスレッドにまたがらない問題のデモ
X = 'abc'
ctx = threading.local()
ctx.x = 123 #
print(ctx, type(ctx), ctx.x)
def worker():
print(X)
print(ctx)
# ctx.x = '11111' # , 。
print(ctx.x)
print('working')
worker()
print('========')
threading.Thread(target=worker).start()
# , , threading.local
# ,