グローバル変数を使用して別のスレッドでループを実行して終了します。このコードはループ内のスレッドを停止していないようです。私はプログラムがもう印刷されないと期待しています。 2秒後にはまだ無期限に実行されます。Pythonでスレッド間でグローバル変数を共有する方法は?
私はここで何か根本的に間違っていますか?
import time
import threading
run = True
def foo():
while run:
print '.',
t1 = threading.Thread(target=foo)
t1.run()
time.sleep(2)
run = False
print 'run=False'
while True:
pass
私は彼らがスレッドがノンストップ処理を行っているケースを表現しようとしていると思うので、ポイント3は間違いです。または、あなたは 'time.sleep(0) 'がなくても、グローバルインタープリタロックのために他のスレッドが実行されないようにしていると言っていますか? –
答えに感謝しています。私は間違いを犯しました。 – user730094
@Mike:私はそれについては確信していませんが、それは私の心を越えました。つまり、私はPythonの新しい実装がGILの欠点を修正したことを知っています。Pythonの私のバージョンはこのコードを完全にうまく実行し、他のスレッドの実行を妨げてはいけません。 –