2014-02-05 5 views
0

어떻게 여러 개의 .exe 파일을 한 번에 Python에서 실행합니까? LAN Pinger를 만들기 위해 다른 스택 오버 플로우 질문의 코드를 수정했습니다. 이 핑거는 서브넷 마스크 내의 모든 장치를 ping해야하므로 내 경우에는 ping.exe를 255 회 실행해야합니다. 결과적으로이 작업을 실행하는 데 오랜 시간이 걸립니다. 한 번에 여러 번 ping.exe를 실행하려면 어떻게해야합니까?한 번에 여러 개의 .exe 파일 실행

import subprocess 
import os 
with open(os.devnull, "wb") as limbo: 
     print "SCANNING YOUR LAN..." 
     for n in xrange(1, 256): 
       ip="192.168.0.{0}".format(n) 
       result=subprocess.Popen(["ping", "-n", "1", "-w", "200", ip], 
         stdout=limbo, stderr=limbo).wait() 
       if result: 
         pass 
       else: 
         print ip, "is active" 

가 어떻게이 프로그램을보다 효율적으로 할 다음과 같이

내가 현재 사용하고있는 코드는?

답변

1

당신은 내가 상상처럼 당신이 뭔가를 할 수있는 모든 IP를 "ipaddress.txt"라는 파일을 가지고 잘 경우 :

f = open('ipaddress.txt') 
    lines = f.readlines() 
    f.close() 
    for line in lines: 
     subprocess.Popen(["ping", "-a", "-n", "l"] 

그 코드는 개념이어야한다 아직도 작동하지 않는 경우에도 마찬가지입니다. 192.168.0.1/255로 ping을하고 활성 ips를 다시 표시해야합니다.

2

Popen 전화에 wait을 넣지 마십시오.

당신이 그 (것)들을 병렬로 실행해야하지만 그들은 모두 진행하기 전에 할 것까지 대기하는 경우는, 수행

당신이 일에게 IPS 목록을 만들 조금 재구성해야 물론
# Create a list of the running processes 
running = [subprocess.Popen(...) for ip in ips] 
# Wait /after/ all process have launched. 
[process.wait() for process in running] 
# Rest of code here. 

,

관련 문제