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 Nonesollte die gewünschte Ausgabe sein:

[aus]:

[1, 4, 9, 16, 25] [1, 8, 27, 64, 125]

Antworten auf die Frage(2)

Ihre Antwort auf die Frage