Je n'ai pas accès à une machine Windows, mais quelque chose comme ça pourrait faire l'affaire. Changez la deuxième partie pour correspondre à ce que vous faites avec Python.
/* (1) Instead of Python scripts, count some files and store the counts */
winexec rm "/Users/dimitriy/*_count.txt"
winexec find /Users/dimitriy -type f -name '*.ado' | wc -l > ado_count.txt
winexec find /Users/dimitriy -type f -name '*.pdf' | wc -l > pdf_count.txt
winexec find /Users/dimitriy -type f -name '*.do' | wc -l > do_count.txt
/* (2) Wait for ALL 3 files to be generated since Stata does not wait for winexec commands to finish */
capture ssc install fs, replace
while "`num_files'" != "3" {
local num_files: word count `r(files)'
sleep 10000 // sleep 10 seconds
fs *_count.txt
}
di "All Done!"
Réponse au commentaire ci-dessous:
Cela n'a pas de sens et ne fonctionnera pas pour une foule de raisons. Je supposais que vos scripts Python cracher 8 fichiers de sortie. Puisque je ne sais pas ce qu'ils sont, j'ai essayé d'utiliser 3 commandes Mac qui produisent trois fichiers pour me donner quelque chose à travailler à l'étape 1. L'étape 2 vérifie que ces 3 fichiers existent avant de continuer.
En supposant que chaque script Python i produit un fichier appelé output_i.txt pour i = 1, .., 8, vous aurez besoin d'avoir quelque chose comme ceci:
forvalues v=1/8 {
winexec "C:/Python34/python.exe" "D:/my code/PythonCode`v'.py"
}
capture ssc install fs, replace
while "`num_files'" != "8" {
local num_files: word count `r(files)'
sleep 10000 // sleep 10 seconds
fs output_*.txt
}
Vous pouvez WinExec (plutôt que shell) le premier k-1 et shell le kth. Cela ne fonctionnera pas si le kth prend beaucoup moins de temps que certains autres. Sinon, jetez un coup d'œil à -parallel-. –
Je pense que cela fonctionnerait bien, surtout parce que je peux choisir celui qui prend le plus de temps et ajouter une commande d'attente pour un tampon. Merci! – RandomCat
Une autre option serait d'écrire une boucle while qui vérifie la sortie des scripts python, avec une commande sleep qui se déclenche quand ils n'existent pas tous. –