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?


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.