2011-10-06 3 views
0

코드가 정상적으로 작동합니다. 방금 효율성 문제가있었습니다. 이 코드에서는 "try ... except"을 사용하여 프로그램을 중단시키는 오류를 전달합니다. 이 오류는 도달 할 수없는 IP 주소로 인해 발생합니다. 전에 말했듯이, 코드는 그 일을합니다. 이 IP가 도달 할 수 있는지 확인하고이를 전달하는 가장 빠른 방법인지 알고 싶습니다. IP를 찾을 수없는 경우 30 ~ 45 초 동안 정지합니다. 소수의 시간을 쌓아두면 오히려 시간이 많이 걸릴 수 있습니다. 효율성에 대한"try ... except"로 효율성

import win32net 

def GetUsers(IP): 
    try: 
     Users = win32net.NetGroupGetUsers(IP,'none',0), 
    except: 
     print IP + ': Was not found!' 
    else: 
     print IP + ': ' + Users 
    return 

F = open("C:\Users\*User*\Desktop\IP_List.txt") 

for CurrentIP in F.readlines(): 
    GetUsers(CurrentIP.strip()), 

F.close() 
print 'DONE!' 
+0

형식을 유지하지 않는 이유를 알 수 없습니다. 죄송합니다 ... – iFetus

+0

코드 블록으로 형식을 지정하려면 각 코드 행 앞에 4 개의 공백을 붙이거나 코드를 강조 표시하고 control-K를 누르면됩니다. 자세한 내용은 [Stack Overflow Markdown reference] (http://stackoverflow.com/editing-help#code)를 참조하십시오. – icktoofay

+0

이 코드는 많은 위음성을 유발할 수 있습니다. 많은 라우터들이 아마도'NetGroupGetUsers'의 목적 인 사용자리스트 요청을 차단할 것입니다. IP 주소를 핑 (ping)하여 더 나은 응답을 얻게 될 것입니다.하지만 일부 라우터는 그것들을 차단합니다. – icktoofay

답변

5

귀하의 질문은 try의 사용 ... except 절대적으로 관련이 없습니다. 파이썬에서의 예외 처리는 상대적으로 빠르며, 다른 파이썬 문을 실행하는 것과 거의 같습니다 (마이크로 초 단위로 이야기합니다).

의심 할 여지없이 IP 주소에 도달 할 수없는 경우 NetGroupGetUsers의 동작으로 인해 30-45 초 성능이 발생합니다.