Zwei Funktionen gleichzeitig ausführen, die Parameter annehmen und Listen zurückgeben?
Ich verstehe, dass zwei Funktionen parallel ausgeführt werden könnenmultiprocessing
oderthreading
Module, z.B.Stellen Sie sicher, dass 2 Funktionen gleichzeitig ausgeführt werden undPython Multiprocessing für parallele Prozesse.
In den obigen Beispielen wird jedoch nur die Druckfunktion verwendet.Ist es möglich, Funktionen, die eine Liste zurückgeben, in Python parallel auszuführen, wenn ja, wie?
Ich habe es mit Threading versucht:
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
aber ich habe den folgenden Fehler bekommen:
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
Ich habe versucht, etwas einzugebenargs
Parameter als Tupel anstelle einer Variablen:
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
aber es kehrt nur zurückNone None
sollte die gewünschte Ausgabe sein:
[aus]:
[1, 4, 9, 16, 25] [1, 8, 27, 64, 125]