Parece que IDLE (parte de la instalación estándar de Python Windows) no ejecutará programas de subprocesamiento múltiple correctamente sin cuelgues desagradables o bloqueos de errores. ¿Alguien sabe de una manera de arreglar esto?Python ¿IDLE compatible con multihilo?
El siguiente programa siempre va a colgar en IDLE pero completa normalmente cuando se ejecuta con el intérprete de Python directamente: salida
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!"
muestra:
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!
salida al usar IDLE "Ejecutar Módulo" función siempre se cuelga indefinidamente cuando la línea que lee 23 o 24 aparece en mi máquina.
IDLE está escrito en Tkinter, no en WxPython. –
Inactivo está escrito en Python y el código de Python no usa directamente el GIL. AFAIK, el uso de Idle del módulo de subprocesos está limitado a las clases de Subprocesamiento y Condición y a la función de subproceso actual. –