Simultaneamente, executar duas funções que usam parâmetros e retornam listas?
Entendo que duas funções podem ser executadas em paralelo usandomultiprocessing
outhreading
módulos, por exemploExecute duas funções ao mesmo tempo eMultiprocessamento Python para processos paralelos.
Mas os exemplos acima usam apenas a função de impressão.É possível executar funções que retornam uma lista em paralelo em python; se sim, como?
Eu tentei com rosqueamento:
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
mas eu tenho o seguinte erro:
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
Eu tentei inserirargs
parâmetro como uma tupla, em vez de uma variável:
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
mas só retornaNone None
, a saída desejada deve ser:
[Fora]:
[1, 4, 9, 16, 25] [1, 8, 27, 64, 125]