2011-05-10 3 views
0

이 프로그램은 첫 번째 프로그램을 시작합니다. 그러나 나는 또한 두 번째 평행선을 달리고 싶다. 스크립트로 두 개 이상의 프로그램을 시작할 수 있습니까?Python : 동시에 많은 스크립트 시작

# start many programs 
execfile('C:/Dokumente und Einstellungen/schnei17/Desktop/python/zeit/1.py') 
print 1 
execfile('C:/Dokumente und Einstellungen/schnei17/Desktop/python/zeit/2.py') 
print 2 
+5

왜이 경우'서브 프로세스 '를 사용하지 않습니까? –

+1

'subprocess'는'multiprocessing'을 사용하는 프로세스간에 데이터를 공유해야하는 경우를 제외하고 훨씬 쉽게 만듭니다. – tMC

답변

3

는 서브 프로세스 파이썬 모듈을 시도 :

import subprocess 
subprocess.Popen(["python.exe", 'C:/Dokumente und Einstellungen/schnei17/Desktop/python/zeit/1.py']) 
subprocess.Popen(["python.exe", 'C:/Dokumente und Einstellungen/schnei17/Desktop/python/zeit/2.py']) 

그것은 병렬로이 스크립트를 실행합니다 (당신의 python.exe를가 PATH에있는 경우).

+0

오류가 발생했습니다 : WindowsError : [오류 193] (win-32 응용 프로그램이 아닙니다) – kame

+0

I 스크립트 이름 앞에서 python.exe 호출로 업데이트하면 python.exe를 파이썬 실행 파일의 전체 경로로 바꿀 수 있습니다. –

0

여러 응용 프로그램을 시작하려면 스레드를 사용하는 것이 좋습니다.

shellcommands=("notepad.exe", 
       "calc.exe", 
       "mspaint.exe") 

import os 
import sys 
import time 
import datetime 
import threading 
import subprocess 

class ThreadClass(threading.Thread): 
    # Override Thread's __init__ method to accept the parameters needed: 

    def __init__ (self, command): 
     self.command = command 
     threading.Thread.__init__ (self) 

    def run(self): 
     now = datetime.datetime.now() 
     print "%s %s %s \n" % (self.getName(), self.command,now) 
     try: 
      subprocess.call(self.command, shell=True) 
     except Exception, err: 
      print "ERROR: %s\n" % str(err) 

for cmd in shellcommands: 
    t = ThreadClass(cmd) 
    t.start() 

sys.exit() 
+0

이렇게하면 파이썬도 실행되고 콘솔에서는 차단됩니다. 이것이 의도 된 것이 아니라면 하위 프로세스를 사용하는 것이 좋습니다. – Perkins

+0

나는 aggree해야합니다 :) – lukaz

관련 문제