Windows 7 cmd czeka na równoległe procesy

0

Próbuję uruchomić wiele skryptów Pythona równolegle w systemie Windows 7 (i 10).
Używam ich wszystkich z innego skryptu Pythona, który wykonuje więcej funkcji na plikach edytowanych przez skrypty.
Chcę, aby zewnętrzny skrypt czekał, aż inne skrypty zostaną uruchomione w cmd.

próbowałem start / w ale to sprawiło, że każdy skrypt czekał przed zamknięciem okna cmd.

Zasadniczo chcę zrobić, aby python poczekał, aż 3 procesy zostaną zakończone. ostatni skrypt jest tylko drukuj („gotowe”) i jest bez znaczenia dla wszystkich, na których mi zależy.
jest to dla mnie ważne, aby rozwiązać trzy procesy, ponieważ muszę zrobić to samo z 30 (na serwerze jest wystarczająco dużo dostępnych wątków)

to jest polecenie cmd, które próbuję uruchomić.

os.system("start python node1.py & start python node2.py & start python node3.py && start /w printstatement.py")

jakieś sugestie?

Dror Bogin
źródło
Więc chcesz uruchomić wiele skryptów równolegle, ale poczekać, aż wszystkie zostaną zakończone? Nie sądzę, aby było to możliwe dzięki natywnym poleceniom wsadowym. Jednak możesz to zrobić z Pythona, spawnuj wiele cmds bez start i dołącz niektóre funkcje nasłuchiwania, gdy wszystkie procesy zostaną zakończone.
Tak, po prostu odkryłem, jak to zrobić. Wziąłem tutaj post, aby rzeczywiście znaleźć natywną odpowiedź Pythona
Dror Bogin
Jeśli uda Ci się rozwiązać problem natywnie, możesz opublikować odpowiedź tutaj i zaakceptować ją lub możesz usunąć pytanie bez konsekwencji.
BoffinbraiN

Odpowiedzi:

0

rozwiązany przy pomocy natywnego modułu Pythona subprocess iz pomocą przepełnienie stosu społeczność.

import subprocess;
procs = [subprocess.Popen(['python', 'node{}.py'.format(n)]) for n in range(1, 4)];
rets = [p.wait() for p in procs]

Dziękujemy wszystkim za poświęcenie czasu.

Dror Bogin
źródło