【问题标题】:Efficiency with "try...except"“尝试...除外”的效率
【发布时间】:2011-10-06 01:57:38
【问题描述】:

代码运行良好。我只是有一个效率问题。在这段代码中,我使用“try...except”来传递会导致程序崩溃的错误。该错误是由于无法访问 IP 地址引起的。正如我之前所说,代码完成了它的工作。我想知道这是否是查看 IP 是否可访问并将其传递的最快方法。如果找不到 IP,它会停止 30 到 45 秒。堆积了几次,这可能相当耗时。

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!'

【问题讨论】:

  • 我不知道为什么它没有保持它的格式。抱歉……
  • 要将某些内容格式化为代码块,您可以在每行代码前加上四个空格,或者突出显示代码并按 control-K,这将为您完成。有关详细信息,请参阅Stack Overflow Markdown reference
  • 这段代码可能会得到很多假阴性;许多路由器可能会阻止用户列表请求,这就是NetGroupGetUsers 的目的。 ping IP 地址可能会得到更好的响应,尽管有些路由器也会阻止这些。

标签: python performance error-handling ip try-except


【解决方案1】:

您关于效率的问题与您使用try ... except 完全无关。 Python 中的异常处理相对较快,与运行任何其他 Python 语句大致相同(我们说的是微秒级)。

您的 30-45 秒表现无疑是由于 IP 地址不可达时NetGroupGetUsers 的行为所致。

【讨论】:

    猜你喜欢
    • 2012-02-02
    • 1970-01-01
    • 2019-12-09
    • 1970-01-01
    • 2021-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    相关资源
    最近更新 更多