Estoy tratando de usar subprocesos en un proyecto de Python en el que estoy trabajando, pero los subprocesos no parecen comportarse como deberían en mi código. Parece que todos los subprocesos se ejecutan secuencialmente (es decir, el subproceso2 se inicia después de que finaliza el subproceso 1, ambos no se inician al mismo tiempo). Escribí un script simple para probar esto, y eso también ejecuta hilos secuencialmente.El subproceso de Python parece ejecutar subprocesos
import threading
def something():
for i in xrange(10):
print "Hello"
def my_thing():
for i in xrange(10):
print "world"
threading.Thread(target=something).start()
threading.Thread(target=my_thing).start()
Aquí está la salida que recibo de ejecutarlo:
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
world
world
world
world
world
world
world
world
world
world
El mismo comportamiento se observa con mucho mayor número de iteraciones de los bucles.
Intenté buscar en la web y SO más antiguas, pero no encontré nada que me ayudara. ¿Puede alguien indicar qué problema tiene este código?
Mismo comportamiento con 10000 iteraciones – MAK
En el proyecto real en el que estoy trabajando, uno de los subprocesos es un ciclo infinito que escucha mensajes y llama a una función de devolución de llamada como ellos llegan. Simplemente bloquea todos los otros hilos. Lamentablemente, el código de bucle real no se puede modificar (simplemente invoco el método run() de una clase dentro del hilo). – MAK
Cuando ejecuto el script de esta manera: './pythr.py | uniq -c' Obtengo: 8969 Hola | 1 Hola mundo | 6626 mundial | 1 | 3373 mundial | 1030 Hola. Por lo tanto, cambia el control, aunque no tan a menudo ... – viraptor