Quel est la différence entre ThreadPool
et Pool
en multiprocessing
module. Lorsque j'essaie de mon code, c'est la principale différence que je vois:
from multiprocessing import Pool
import os, time
print("hi outside of main()")
def hello(x):
print("inside hello()")
print("Proccess id: ", os.getpid())
time.sleep(3)
return x*x
if __name__ == "__main__":
p = Pool(5)
pool_output = p.map(hello, range(3))
print(pool_output)
Je vois la sortie suivante:
hi outside of main()
hi outside of main()
hi outside of main()
hi outside of main()
hi outside of main()
hi outside of main()
inside hello()
Proccess id: 13268
inside hello()
Proccess id: 11104
inside hello()
Proccess id: 13064
[0, 1, 4]
Avec "Pool De Threads":
from multiprocessing.pool import ThreadPool
import os, time
print("hi outside of main()")
def hello(x):
print("inside hello()")
print("Proccess id: ", os.getpid())
time.sleep(3)
return x*x
if __name__ == "__main__":
p = ThreadPool(5)
pool_output = p.map(hello, range(3))
print(pool_output)
Je vois la sortie suivante:
hi outside of main()
inside hello()
inside hello()
Proccess id: 15204
Proccess id: 15204
inside hello()
Proccess id: 15204
[0, 1, 4]
Mes questions sont les suivantes:
pourquoi le "dehors __principaux__()" exécuter à chaque fois dans l'
Pool
?multiprocessing.pool.ThreadPool
ne pas frayer de nouveaux processus? Il vient juste de créer de nouveaux threads?Si oui quel est la différence entre l'utilisation d'
multiprocessing.pool.ThreadPool
contre seulementthreading
module?
Je ne vois pas de documentation officielle pour ThreadPool
n'importe où, quelqu'un peut m'aider où je peux le trouver?