Python-Threadpool
- Thread-Pool-Definition
-
Unterschiede zwischen
multiprocessing.pool.ThreadPoolundmultiprocessing.Pool -
multiprocessing.Poolin Python -
multiprocessing.pool.Threadpoolin Python
Dieses Tutorial zeigt den Unterschied zwischen Pool von multiprocessing und ThreadPool von multiprocessing.pool
Thread-Pool-Definition
Ein Thread-Pool ist eine Gruppe von vorinstanziierten, inaktiven Threads, die bereit sind, ihnen Arbeit zu geben. Das Erstellen eines neuen Thread-Objekts für jede asynchron auszuführende Aufgabe ist teuer. Bei einem Thread-Pool würden Sie die Aufgabe zu einer Aufgabenwarteschlange hinzufügen, und der Thread-Pool weist der Aufgabe einen verfügbaren Thread zu. Der Thread-Pool hilft zu vermeiden, mehr Threads als nötig zu erstellen oder zu zerstören.
Unterschiede zwischen multiprocessing.pool.ThreadPool und multiprocessing.Pool
multiprocessing.pool.ThreadPool verhält sich genauso wie multiprocessing.Pool. Der Unterschied besteht darin, dass multiprocessing.pool.Threadpool Threads verwendet, um die Logik des Workers auszuführen, während multiprocessing.Pool Worker-Prozesse verwendet.
multiprocessing.Pool in Python
Der folgende Code erzeugt 4 verschiedene Prozesse, die jeweils die Funktion sleepy() ausführen.
# python 3.x
from multiprocessing import Pool
import os
import time
def sleepy(x):
print("Process Id", os.getpid())
time.sleep(x)
return x
if __name__ == "__main__":
p = Pool(5)
pool_output = p.map(sleepy, range(4))
print(pool_output)
Ausgabe:
Process Id 239
Process Id 240
Process Id 241
Process Id 242
[0, 1, 2, 3]
multiprocessing.pool.Threadpool in Python
ThreadPool generiert 4 Threads, die die Funktion sleepy() anstelle von Worker-Prozessen ausführen.
# python 3.x
from multiprocessing.pool import ThreadPool
import os
import time
def sleepy(x):
print("Process Id", os.getpid())
time.sleep(x)
return x
if __name__ == "__main__":
p = ThreadPool(5)
pool_output = p.map(sleepy, range(4))
print(pool_output)
Ausgabe:
Process Id 217
Process Id 217
Process Id 217
Process Id 217
[0, 1, 2, 3]
