so starten Sie ein Kommando-Fenster von Python
Möchte ich die Verwendung von Python 2.6 auf Windows-Start mehrerer separate - Befehl von windows, die jeweils Ihr eigenes Python-Skript. Der Zweck ist: diese Kunden, und ich bin versucht zu laden, bis die server mit Anfragen von mehreren quasi-unabhängige clients.
Brauche ich nicht für die Kommunikation mit dem AUFTRAGGEBER während oder nach dem laufen, aber ich brauche zu senden, die jeweils eine andere commmandline arg, und ich möchte jedem client die Ausgabe zum Blättern in seinem eigenen "Konsole".
Aus der DOS-Eingabeaufforderung, den Befehl "start" tut, was ich möchte. Ich kann entweder:
start perf_test.py 2
oder
start cmd /c perf_test.py 3
oder
start cmd /c python perf_test.py 4
(Diese wird für Sie arbeiten, wenn Sie Ihre "file associations" setup korrekt *.py-Dateien. Es gibt andere threads auf, dass, wenn Sie Hilfe benötigen. Oder, verwenden Sie vollständige Pfade zu python exe und/oder Ihrem Skript.)
Meine Herausforderung ist: Wie bekomme ich den gleichen Effekt von Python?
Mit subprocess
Bibliothek, ich habe versucht, Variationen wie dieses:
from subprocess import *
p = Popen(["perf_test.py", "4"], shell=True, stdin=PIPE)
Aber auch mit shell=True
die Ausgabe miteinander vermischt, in die Fenster bin ich auch schon ausgeführt. Hinzufügen stdout=PIPE
hält, aber dann muss ich Lesen p.stdout
oder verwenden Sie p.communicate()
. Hinzufügen von "cmd", um den Popen bekommt etwa das gleiche:
p = Popen(["cmd", "/c", "perf_test.py", "4"], shell=True, stdin=PIPE)
Keiner der oben um den Effekt, den ich Suche, die lautet: "pop öffnen Sie eine neue, individuelle Fenster für das Skript und sehen Sie sich seine Ausgabe Blättern Sie durch in Ihre eigene Konsole" (weil ich wirklich ausführen möchten N diese clients parallel).
Eine andere Sache, wandte ich mich fast funktioniert es auch.
import os
os.startfile("perf_test.py")
Diese sofort zurückgegeben, und eine tatsächliche dosbox öffnet sich. Yay! Erfolg! Das ist, bis ich versuchen, ein argument hinzufügen. Dies schlägt fehl:
os.startfile("perf_test.py 5")
mit dem Fehler "The system cannot find The file specified"... denn es ist das hinzufügen von "[SPACE]5" an den Dateinamen an. (Der Zweck der Argumentation ist, dass jeder "perf_test" muss eine ID zugewiesen, so dass Sie auf dem server als verschiedene Instanzen.)
Andere Ansätze, die ich betrachtet habe, und wirklich nicht mögen, aus verschiedenen Gründen:
- Führen jedes "perf_test" in einem eigenen thread. (Aber ich wirklich wollen, um die Ausgabe zu sehen jeder in seiner eigenen Konsole.)
- Meine eigenen pseudo-Konsolen mit Tk. (Bild werde ich einfach auf verschiedene threading-Probleme gibt es.)
- Dynamisch schreiben .BAT-Datei on-the-fly mit den Zeilen "start perf_test.py 1", "start perf_test.py 2", usw., dann starten Sie, die .BAT-Datei mit
Popen
oderstartfile
.
Ich erwarten, den letzten funktioniert... und ich denke, ist mein letzter Ausweg, wenn ich nicht bekommen kann ein Python-Skript zu tun, direkt.
Vielen Dank für jeden input /Einblicke!
InformationsquelleAutor Dan H | 2012-10-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie verwenden:
InformationsquelleAutor Rod
Code :
InformationsquelleAutor assassin44037
Gut, ich hatte das gleiche problem. Es wurde gelöst mit dieser Methode.
Sie sollten Versuchen:
InformationsquelleAutor PGC channel