2017-05-03 2 views
1

한 가지 질문 : 저는 두 개의 다른 exe 파일을 병렬로 (Windows) 실행하려고합니다. 내 모든 테스트는 두 개의 응용 프로그램을 시작하지만 하나씩 차례대로 (응용 프로그램을 닫은 후) 시작합니다. 뭐가 문제 야?Python 3는 Windows에서 두 개의 응용 프로그램을 병렬로 실행합니다.

import threading 
import subprocess 
import os.path 

def Worker(aPrg): 
    _, name = os.path.split(aPrg) 
    if os.path.isfile(aPrg): 
     lExe = [] 
     lExe.append(aPrg) 
     print('Start: ' + name) 
     lResult = subprocess.call(lExe) 
    else: 
     print('ERROR: ' + name + ' not available!') 
    return 

def main(): 
    t1 = threading.Thread(target=Worker('C:\\windows\\notepad.exe')) 
    t2 = threading.Thread(target=Worker('c:\\windows\\explorer.exe')) 
    t1.start() 
    t2.start() 

if __name__ == '__main__': 
     main() 

모든 아이디어 주셔서 감사합니다!

Geosucher

답변

0

이 문제에 대한 이유가 여기에 설명되어 있습니다 : Python threading appears to run threads sequentially

이 당신을 도움이 될 것입니다

import subprocess 
import os.path 
import multiprocessing 

def Worker(aPrg): 
    _, name = os.path.split(aPrg) 
    if os.path.isfile(aPrg): 
     lExe = [] 
     lExe.append(aPrg) 
     print('Start: ' + name) 
     lResult = subprocess.call(lExe) 
    else: 
     print('ERROR: ' + name + ' not available!') 
    return 

def main(): 
    p = multiprocessing.Pool(2) 
    p.map(Worker, ('c:\\windows\\explorer.exe','c:\\windows\\explorer.exe')) 

if __name__ == '__main__': 
     main() 
+0

감사합니다! 그것은 잘 작동합니다. 나는 또 다른 가능성이 전화 대신에 Popen을 사용한다는 것을 관찰했다. – Geosucher