2012-10-05 6 views
3

Windows에서 Python 2.6을 사용하여 각각 개의 별도의 Python 스크립트를 실행하는 명령 창을 여러 개 실행하고 싶습니다. 목적은 이것들이 클라이언트인데 여러 개의 준 독립적 클라이언트의 요청으로 서버를로드하려고합니다.Python에서 명령 창을 시작하는 방법

실행 중 또는 실행 후 클라이언트와 통신 할 필요는 없지만 각각 다른 commmandline arg를 보내야하며 각 클라이언트의 출력을 자체 "콘솔"에서 스크롤하고 싶습니다.

DOS 명령 줄에서 "시작"명령은 내가 원하는 것을 수행합니다. I 중 하나를 수행 할 수 있습니다

start perf_test.py 2 

또는

start cmd /c perf_test.py 3 

또는

start cmd /c python perf_test.py 4 

(당신이 * 평 파일을 올바르게 설정하여 "파일 연결을"이있는 경우이가 당신을 위해 작동합니다. 도움이 필요하면 다른 스레드가 필요합니다. 또는 파이썬 exe 및/또는 스크립트의 전체 경로를 사용하십시오.

내 채널 allenge는 어떻게 파이썬에서 같은 효과를 얻습니까? subprocess 라이브러리를 사용

, 나는이 같은 변화를 시도했습니다.

from subprocess import * 
p = Popen(["perf_test.py", "4"], shell=True, stdin=PIPE) 

그러나 심지어 shell=True으로, 출력이 이미 실행하고있어 창에 혼합 된입니다 stdout=PIPE를 추가하는 것을 중지하지만, 나는 p.stdout을 읽거나 p.communicate()을 사용해야합니다. 위의

p = Popen(["cmd", "/c", "perf_test.py", "4"], shell=True, stdin=PIPE) 

없음은 내가 찾고 효과를 달성하지 : 다음는 popen에 "cmd"를 추가하면 거의 같은 얻는다 "팝업이 스크립트에 대한 새로운 별개의 창을 열고, 그리고 시계 자체 콘솔 "(이 클라이언트를 N 개 병렬로 실행하기 때문에)에서 출력을 스크롤 할 수 있습니다.

다른 하나는 으로 거의으로되어 있습니다.

import os 
os.startfile("perf_test.py") 

이것은 즉시 반환되고 실제 dosbox가 나타납니다. 예! 성공! 즉, 인수를 추가 할 때까지입니다. 이것은 실패 오류와

os.startfile("perf_test.py 5") 

는 "지정한 파일을 찾을 수 없습니다"...이 파일 이름에 "[SPACE] (5)"추가되기 때문이다. 인수의 목적은 각각의 "perf_test"에 할당 된 ID가 있어야 서버가 다른 인스턴스가되도록해야한다는 것입니다.

다른 접근법 나는 여러 가지 이유로 고려해 왔지만 실제로는 좋지 않습니다. :

  • "perf_test"를 자체 스레드에서 실행하십시오. (하지만 콘솔마다 출력물을보고 싶습니다.)
  • Tk로 내 자신의 가상 콘솔을 만드십시오. (그림을 보면 다른 스레드 문제가 발생할 것입니다.)
  • "start perf_test.py 1", "start perf_test.py 2"등과 같이 .BAT 파일을 동적으로 작성한 다음 Popen 또는 startfile으로 .BAT 파일을 시작하십시오.

저는 마지막으로 작동 할 것이라고 기대합니다 ... 그리고 직접 할 파이썬 스크립트를 얻을 수 없다면 내 최후의 수단이라고 생각합니다.

모든 입력/통찰력에 감사드립니다!

+0

당신은 파이썬 스크립트가 실행을 완료 한 후 각 콘솔이 열려있을 하시겠습니까? – martineau

답변

6

당신은 사용할 수 있습니다

import os 
os.system("start python perf_test.py 5") 
+1

간단하고 정확하게 ... 내가 찾고있는 것. 나는'os.system()'변종들도 많이 시도했다고 맹세한다. 고맙습니다! –

0

코드 :

user = raw_input("welcome to cmd: ") 
def print_perms(chars, minlen, maxlen): 
    for n in range(minlen, maxlen+1): 
     for perm in itertools.product(chars, repeat=n): 
      print(''.join(perm)) 
+1

OP가 코드를 사용해야하는 이유는 무엇입니까? 좀 더 자세한 답변을주십시오. – Zippy

관련 문제