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 :
dans l'init de ma classe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part from multiprocessing.pool import ThreadPool
Sur le click du bouton "Start", je met ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part self.threadPool = ThreadPool(4)
La fonction download de mon objet :
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")
Console :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 def download(self): time.sleep(10) return
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"....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 apply_async 1 apply_async 2
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 ?
Partager