Tengo un script de Python simple que usa dos scripts de Python mucho más complicados, y hace algo con los resultados.Programación concurrente muy simple en Python
que tienen dos módulos, Foo y Bar, y mi código es el siguiente:
import Foo
import Bar
output = []
a = Foo.get_something()
b = Bar.get_something_else()
output.append(a)
output.append(b)
Ambos métodos toman mucho tiempo para funcionar, y tampoco depende de la otra, por lo que la solución obvia es ejecútelos en paralelo. Cómo puedo lograr esto, pero asegúrese de que se mantenga el orden: Cualquiera que termine primero debe esperar a que el otro finalice antes de que el script pueda continuar.
Avíseme si no me he aclarado lo suficiente, he intentado hacer que el código de ejemplo sea lo más simple posible.
EDIT:
Gracias ámbar, su solución funciona con un cambio ligero.
En lugar de llamar a start() de cada hilo cuando se crea, les estableció de esta manera:
threadname = threading.Thread(target=foo)
threadname.start()
Sin este que estaba recibiendo el error AttributeError: 'NoneType' object has no attribute 'join'
y algunos muy comportamiento extraño con la concurrencia . Si edita su respuesta a continuación, la marcaré como resuelta.
Enhebrar es útil para el código con ralentí. Si tiene muchos cálculos pesados, debe aconsejar el multiprocesamiento, ya que el enhebrado solo agregará retardos en este caso. – akaRem
@akaRem Claro, puedo editar en una nota al respecto. – Amber
Sí, requiere mucha CPU. Sin embargo, haré que esto funcione primero; Eché un vistazo rápido y las API son idénticas. – Rory