Je transfère chaque jour un fichier de 150-200mb vers plusieurs emplacements (lecteurs partagés situés à travers le monde). Le problème est que chaque transfert (en utilisant shutil) prend probablement 100-700 secondes et que chacun doit se terminer pour que le prochain commence. Il faut maintenant une heure pour transférer certains fichiers si je le fais de cette façon. Ma solution temporaire consistait à créer un fichier .py distinct à exécuter pour chaque emplacement afin qu'ils puissent être exécutés simultanément, mais ce n'est pas idéal.Copie simultanée d'un fichier sur plusieurs chemins
Comment puis-je plonger dans la programmation multi-thread? Je voudrais exécuter tous les transferts à la fois mais je n'ai aucune expérience avec cela.
Une simple recherche Google m'a atterri avec:
https://docs.python.org/3/library/concurrent.futures.html.
import shutil
with ThreadPoolExecutor(max_workers=4) as e:
e.submit(shutil.copy, 'src1.txt', 'dest1.txt')
e.submit(shutil.copy, 'src2.txt', 'dest2.txt')
e.submit(shutil.copy, 'src3.txt', 'dest3.txt')
e.submit(shutil.copy, 'src4.txt', 'dest4.txt')
Est-ce que quelqu'un peut me diriger dans la bonne direction? J'ai eu l'intention d'apprendre à faire les choses en parallèle pendant un moment maintenant mais je n'ai jamais réussi à le faire.
Peut-être [ce poste] (http://stackoverflow.com/questions/20887555/dead-simple-example-of-using-multiprocessing-queue-pool-and-locking) vous aidera. J'ai trouvé la réponse acceptée comme un exemple utile. – PyNoob
On dirait que vous pourriez aussi renommer les fichiers, c'est correct? – martineau
Cet extrait de code provient des docs que j'ai liés (lorsque j'ai utilisé ctrl + F pour shutil). Je ne vais pas changer le nom si. shutil.copy2 ('../ dashboard.twbx', '// sharedpath/region/dashboard /') – trench