¿Cuál es la forma recomendada para poner fin a las discusiones inesperadamente larga que se ejecutan en Python? No puedo usar SIGALRM, yahilos pitón de larga ejecución
hay que tener cierto cuidado si se utilizan ambos señales y los hilos en el mismo programa . Lo fundamental para recuerde en el uso de señales y los hilos simultáneamente es: realice siempre señal() operaciones en el hilo principal de ejecución. Cualquier hilo puede realizar una alarma(), getsignal(), pausa(), setitimer() o getitimer(); sólo el hilo principal se estableció un nuevo manejador de señales , y el hilo principal será el único en recibir señales (esto es impuesta por el módulo de Python señal , incluso si el subyacente implementación de hilos admite el envío señales a hilos individuales). Este significa que las señales no se pueden utilizar como un medio de inter-hilo communication.Use cerraduras lugar.
Actualización: cada hilo en mis bloques de casos: descarga una página web utilizando el módulo urllib2 y, a veces, la operación lleva demasiado tiempo en sitios extremadamente lentos. Es por eso que quiero poner fin a tales temas lentos
El problema es cuando tienes un método que lleva demasiado tiempo (por ejemplo, urllib.read(), que en algunos casos ignora los tiempos de espera) que Me gustaría interrumpir. – kolinko
Si ejecuta esa lectura en su propio hilo, ¿no puede simplemente dejar de esperarla? Eventualmente se completará/fallará/terminará y luego simplemente se muere? –