IDLE(標準のPython Windowsインストールの一部)は、厄介なハングやバグアウトのクラッシュなしにマルチスレッドプログラムを正しく実行しないようです。誰かがこれを修正する方法を知っていますか?
次のプログラムは常にIDLEでハングしますが、Pythonインタープリターで直接実行すると正常に完了します。
import threading, time
printLock = threading.Lock()
def pl(s):
printLock.acquire()
print s
printLock.release()
class myThread( threading.Thread ):
def run(self):
i = 0
for i in range(0,30):
pl(i)
time.sleep(0.1)
t = myThread()
t.start()
while threading.activeCount() > 1:
time.sleep(1)
pl( time.time() )
print "all done!"
サンプル出力:
U:\dev\py\multithreadtest>python mt.py
0
1
2
3
4
5
6
7
8
9
1277935368.84
10
11
12
13
14
15
16
17
18
19
1277935369.84
20
21
22
23
24
25
26
27
28
29
1277935370.84
1277935371.84
all done!
IDLEの「モジュールの実行」機能を使用した場合の出力は、23または24の行が私のマシンに表示される頃に常に無期限にハングします。