Problème avec ThreadPool (multiprocessing)
Bonjour,
J'ai un soucis avec mon programme...Ce que je voudrais faire c'est télécharger plusieurs fichiers en même temps, donc utiliser les threads
Dans ma classe, j'importe le module qui va bien :
Code:
from multiprocessing.pool import ThreadPool
dans l'init de ma classe :
Code:
self.threadPool = ThreadPool(4)
Sur le click du bouton "Start", je met ceci :
Code:
1 2 3
| print("apply_async 1")
self.threadPool.apply_async(self.downloadObjs[link].download())
print("apply_async 2") |
La fonction download de mon objet :
Code:
1 2 3
| def download(self):
time.sleep(10)
return |
Console :
Code:
1 2
| apply_async 1
apply_async 2 |
Le problème c'est que dans mon cas, l'appel à apply_aync n'est pas asynchrone, mais synchrone. C'est à dire que dans ma console "apply_async 2" est affiché 10 secondes après "apply_async 1"....
Question subsidiaire :
Pour faire ce que je veux faire, est-ce qu'il ne faut pas mieux que j'utlise plutôt threading.Thread ? Je trouvais qu'un pool était plus pratique pour pouvoir paramétrer facilement le nombre de téléchargements simutanés...
Quelqu'un pourrait m'aider svp ?