Al mismo tiempo, ¿ejecuta dos funciones que toman parámetros y devuelven listas?
Entiendo que dos funciones pueden ejecutarse en paralelo usandomultiprocessing
othreading
módulos, p.Haga que 2 funciones se ejecuten al mismo tiempo yMultiprocesamiento de Python para procesos paralelos.
Pero los ejemplos anteriores solo usan la función de impresión.¿Es posible ejecutar funciones que devuelven una lista en paralelo en python? De ser así, ¿cómo?
He intentado con hilos:
from threading import Thread
def func1(x):
return [i*i for i in x]
def func2(x):
return [i*i*i for i in x]
nums = [1,2,3,4,5]
p1 = Thread(target = func1(nums)).start()
p2 = Thread(target = func2(nums)).start()
print p1
print p2
pero recibí el siguiente error:
Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 808, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 761, in run
self.__target(*self.__args, **self.__kwargs)
TypeError: 'list' object is not callable
None
None
Exception in thread Thread-2:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 808, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 761, in run
self.__target(*self.__args, **self.__kwargs)
TypeError: 'list' object is not callable
He intentado ingresarargs
parámetro como una tupla, en lugar de una variable:
import threading
from threading import Thread
def func1(x):
return [i*i for i in x]
def func2(x):
return [i*i*i for i in x]
nums = [1,2,3,4,5]
p1 = Thread(target = func1, args=(nums,)).start()
p2 = Thread(target = func2, args=(nums,)).start()
print p1, p2
pero solo regresaNone None
, la salida deseada debe ser:
[fuera]:
[1, 4, 9, 16, 25] [1, 8, 27, 64, 125]