大的if语句减慢了我的脚本速度

时间:2015-02-16 05:39:51

标签: python

我正在使用带有多个条件的if语句来根据用户输入过滤我的脚本输出。

它有效,但唯一的问题是它会大大减慢我的脚本

对于参考,脚本是像pcap一样的数据包嗅探器,但是用套接字编写。

它非常快速地打印输出,并且我猜测有一个大的if语句会减慢它的速度。

if sourceaddress in (s_addr,"any") and sourceport in (source_port,"any") and filterprotocol in (6,"any"):

这就是我目前使用的。事情是,我必须添加至少5个语句才能完成我的脚本。我该怎么做才能解决这个问题*如果有的话

2 个答案:

答案 0 :(得分:1)

如果这是代码的瓶颈,你必须拥有真正好的代码(我建议使用像cProfile这样的分析器来查找其他瓶颈。但是如果你正在寻找优化它,简单地做它可能会快一点:

if (sourceaddress == s_addr or sourceaddress == "any") and (sourceport==source_port or sourceport == "any") and (filterprotocol == 6 or filterprotocol == "any"):

答案 1 :(得分:0)

Python在不可变变量上工作得更快,所以如果可以的话,将变量更改为不可变。或者在if语句中使它们成为不可变的,就像元组一样。如果它不会破坏任何东西,则将它们转换为元组。