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 : Sélectionner tout - Visualiser dans une fenêtre à part
from multiprocessing.pool import ThreadPool
dans l'init de ma classe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
self.threadPool = ThreadPool(4)
Sur le click du bouton "Start", je met ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
	def download(self):
		time.sleep(10)
		return
Console :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?