Forum: PC Hard- und Software Pythonskript mehrfach parallel starten


von Dennis S. (eltio)


Lesenswert?

Guten Morgen,

ich möchte das gleiche Python-Skript mehrfach in der Windows-Konsole 
starten. Ich helfe mir im Moment damit mehrere Konsolenfenster zu öffnen 
und den Befehl immer einzutippen.

Geht das einfacher? Ich kann mich dunkel daran erinnern, dass man unter 
Linux mit einem &-Zeichen einen Hintergrundprozess starten kann.

Gruß
Dennis

von benwilliam (Gast)


Lesenswert?

mit
start "deinBefehl" würde sich zumindest ein neues Konsolenfenster öffnen 
während du im alten weiter arbeiten kannst.

von neuer PIC Freund (Gast)


Lesenswert?

for i in $(seq 1 5); do ((sleep 3)&); done

Natürlich sleep 3 bei dir mit python script.py ersetzten.

von Dennis S. (eltio)


Lesenswert?

benwilliam schrieb:
> mit
> start "deinBefehl" würde sich zumindest ein neues Konsolenfenster öffnen
> während du im alten weiter arbeiten kannst.
Stimmt, das habe ich jetzt in eine Batch-Datei gepackt.. aber die 
Redundanz ist dann doch irgendwie unschön.. Meckern auf hohem Niveau.. 
;-)

neuer PIC Freund schrieb im Beitrag #4239293:
> for i in $(seq 1 5); do ((sleep 3)&); done
>
> Natürlich sleep 3 bei dir mit python script.py ersetzten.
Wenn ich das direkt in die Konsole eingebe erscheint der folgende 
Fehler:
1
for i in $(seq 1 5); do ((python CheckState.py)&); done
2
"i" kann syntaktisch an dieser Stelle nicht verarbeitet werden.

Danke euch beiden!

von Malte S. (maltest)


Lesenswert?

Dennis S. schrieb:
> Wenn ich das direkt in die Konsole eingebe erscheint der folgende
> Fehler:

Wenn du dir einen Hauch von UNIX Userland installiert dann klappt das. 
Powershell Start-Process ohne -Wait müsste aber auch gehen.

von Hans W. (Firma: Wilhelm.Consulting) (hans-)


Lesenswert?

mehrfach parallel startet man mit dem tool gnu parallel...

73

von Kaj (Gast)


Lesenswert?

Dennis S. schrieb:
> Wenn ich das direkt in die Konsole eingebe erscheint der folgende
> Fehler:for i in $(seq 1 5); do ((python CheckState.py)&); done
> "i" kann syntaktisch an dieser Stelle nicht verarbeitet werden.
>
> Danke euch beiden!
Ich glaube in der Konsole muss es %i heißen, und wenn du das in eine 
batchdatei packst dann %%i.
(Ja, windows unterscheidet, ob man das in die Konsole einhackt, oder ob 
das in einem script steht...)

von Malte S. (maltest)


Lesenswert?

Und seq kennt Windows auch nicht und backgrounden mit & auch nicht (& 
ist nur Befehlstrenner analog zu ; in richtigen Shells). Letzteres war 
ja genau das Problem. Es ging nicht um die fehlende Schleife, sondern 
das fehlende "im Hintergrund".
Wenn dich die zusätzlichen Komsolenfenster nerven, gibt es auch noch 
hstart /NOCONSOLE
http://www.ntwind.com/software/hstart.html

von Dennis S. (eltio)


Lesenswert?

Vielen Dank für eure Antworten. ich hacke es jetzt einfach in eine Batch 
mit "start" und ignoriere die Fenster.. das Problem ist zu unwichtig um 
sich zu lange damit zu beschäftigen! Trotzdem ein paar Rückfragen:

Malte S. schrieb:
> Wenn du dir einen Hauch von UNIX Userland installiert dann klappt das.
> Powershell Start-Process ohne -Wait müsste aber auch gehen.
Was ist denn bitte "Hauch von UNIX Userland"? MSYS? Cygwin?

Hans W. schrieb:
> mehrfach parallel startet man mit dem tool gnu parallel...
Davon gibt es meiner kurzen Recherche nach keine fertigen 
Windows-Binaries.

Gruß
Dennis

von Malte S. (maltest)


Lesenswert?

Dennis S. schrieb:
> Was ist denn bitte "Hauch von UNIX Userland"? MSYS? Cygwin?

Ja, wegen der bash.

Aber ich habe gerade nochmal nachgesehen. Mir bisher unbekannt war start 
/B das könnte genau sein, was du willst.

von guest (Gast)


Lesenswert?

"start /MIN ..." wäre auch noch eine Variante, da wären die Fenster 
zumindest minimiert.

von Planlos (Gast)


Lesenswert?

Ganz andere Idee:

Ist doch dein python-Programm, oder?
1
import os;
2
for x in range(0,3):
3
   os.fork();

am Anfang (oder geeigneter Stelle nach initialisierungen) einbauen, 
schon läuft das Script acht mal.

.
.
.

Ja, dass die children auch forken ist Absicht. Ich mag Bäume :)
1
> pstree 12345
2
python─┬─python─┬─python─┬─python─┬─python───python
3
       │        │        │        └─python
4
       │        │        ├─python───python
5
       │        │        └─python
6
       │        ├─python─┬─python───python
7
       │        │        └─python
8
       │        ├─python───python
9
       │        └─python
10
       ├─python─┬─python─┬─python───python
11
       │        │        └─python
12
       │        ├─python───python
13
       │        └─python
14
       ├─python─┬─python───python
15
       │        └─python
16
       ├─python───python
17
       └─python

von Dennis S. (eltio)


Lesenswert?

Hallo "Planlos",

ab welcher Python-Version ist das denn unter Windows verfügbar...?

Gruß
Dennis

von Planlos (Gast)


Lesenswert?

Dennis S. schrieb:
> ab welcher Python-Version ist das denn unter Windows verfügbar...?

Uuups. Keine Ahnung. Evtl. bei Cygwin-Python statt Windows-Python?

Evtl. findet sich hier eine Alternative:
https://docs.python.org/3/library/multiprocessing.html

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.