私は出力がNUMは常に10ですが、なぜスレッド名が常に同じである理由を私は知っているこの10スレッドは常に同じスレッド名を出力するのはなぜですか?
Thread-10:NUM is 10
Thread-10:NUM is 10
Thread-10:NUM is 10
Thread-10:NUM is 10
Thread-10:NUM is 10
Thread-10:NUM is 10
Thread-10:NUM is 10
Thread-10:NUM is 10
Thread-10:NUM is 10
Thread-10:NUM is 10
ある
NUM = 0
def count():
global NUM
NUM += 1
time.sleep(1)
print(t.getName()+":"+"NUM is "+str(NUM))
for i in range(10):
t = threading.Thread(target=count)
t.start()
このコードを実行しましたか?すべてのスレッドはprint(t.getName()+":"+"NUM is "+str(NUM))
を実行します。 t
は、CPU時間を取得するスレッドであってはなりませんか?私はその名前が同じであってはならないと思う。
私は期待通りに動作します。この
NUM = 0
def count():
global NUM
NUM += 1
name = t.getName()
time.sleep(1)
print(name+":"+"NUM is "+str(NUM))
for i in range(10):
t = threading.Thread(target=count)
t.start()
に変更する場合:t
ため
Thread-1:NUM is 10
Thread-3:NUM is 10
Thread-2:NUM is 10
Thread-4:NUM is 10
Thread-5:NUM is 10
Thread-7:NUM is 10
Thread-10:NUM is 10
Thread-9:NUM is 10
Thread-6:NUM is 10
Thread-8:NUM is 10
't'はどこに設定されていますか? –
't'は* outer *変数です。これは、例えば10に達するまで繰り返し設定されます。 –