2011-10-06 67 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

要将某些内容格式化为一段代码,您可以用四个空格前缀每行代码,或者突出显示代码并按下control-K,这会为您执行此操作。有关更多详细信息,请参阅[Stack Overflow Markdown参考](http://stackoverflow.com/editing-help#code)。 – icktoofay

+0

此代码可能会得到很多错误的否定结果;许多路由器可能会阻止用户列表请求,这是“NetGroupGetUsers”的用途。通过ping IP地址可能会得到更好的响应,尽管一些路由器也会阻止这些地址。 – icktoofay

回答

5

您对效率的问题是绝对无关,您使用的try ... except。 Python中的异常处理速度相对较快,大约与运行其他Python语句相同(我们正在讨论的是微秒量级)。

您的30-45秒性能无疑是由于NetGroupGetUsers当IP地址无法访问时的行为。

相关问题