Tengo un script y quiero que una función se ejecute al mismo tiempo que la otra.
El código de ejemplo que he visto:
import threading
def MyThread (threading.thread):
# doing something........
def MyThread2 (threading.thread):
# doing something........
MyThread().start()
MyThread2().start()
Tengo problemas para que esto funcione. Preferiría poner esto en marcha utilizando una función enhebrada en lugar de una clase.
Este es el script de trabajo:
from threading import Thread
class myClass():
def help(self):
os.system('./ssh.py')
def nope(self):
a = [1,2,3,4,5,6,67,78]
for i in a:
print i
sleep(1)
if __name__ == "__main__":
Yep = myClass()
thread = Thread(target = Yep.help)
thread2 = Thread(target = Yep.nope)
thread.start()
thread2.start()
thread.join()
print 'Finished'
python
multithreading
chrissygormley
fuente
fuente
exiting
comoexciting
, lo que pensé que era más apropiado de todos modos.Hay algunos problemas con su código:
Si realmente desea hacer esto solo con funciones, tiene dos opciones:
Con roscado:
Con hilo:
Doc. Para thread.start_new_thread
fuente
thread.start_new_thread(function, args[, kwargs])
Intenté agregar otra unión (), y parece que funcionó. Aquí hay código
fuente
Puede usar el
target
argumento en elThread
constructor para pasar directamente una función que se llama en lugar derun
.fuente
¿Anuló el método run ()? Si anulaste
__init__
, ¿te aseguraste de llamar a la basethreading.Thread.__init__()
?Después de iniciar los dos subprocesos, ¿el subproceso principal continúa funcionando indefinidamente / bloquea / une en los subprocesos secundarios para que la ejecución del subproceso principal no finalice antes de que los subprocesos secundarios completen sus tareas?
Y finalmente, ¿está recibiendo alguna excepción no controlada?
fuente
__init__
. ¿Se requiere run () entonces? Graciasdef MyThread ( threading.thread )
... Supuse que esas eran definiciones de clase. Si va a subclasificar threading.thread e inicializar el objeto thread contarget=None
u omitir eltarget
argumento, entonces se requiere una implementación de run (). De lo contrario, si solo desea ejecutar una tarea simple en otro hilo, vea la respuesta de jkp.Python 3 tiene la facilidad de lanzar tareas paralelas . Esto facilita nuestro trabajo.
Tiene para la agrupación de subprocesos y la agrupación de procesos .
Lo siguiente da una idea:
Ejemplo de ThreadPoolExecutor
Otro ejemplo
fuente