Python有点慢。我怎样才能加快这段代码的速度?

时间:2011-04-15 12:59:46

标签: python performance

Python令我失望。我搜索了一个代码进行端口扫描,发现了这个。跑了。我用来扫描的程序。根据python代码它非常快。代码如下。
你能帮我加速我的代码吗?我有什么用呢?。

#!/usr/bin/env python  
from socket import *   

if __name__ == '__main__':  
    target = raw_input('Enter host to scan: ')  
    targetIP = gethostbyname(target)  
    print 'Starting scan on host ', targetIP  

    #scan reserved ports  
    for i in range(20, 1025):  
        s = socket(AF_INET, SOCK_STREAM)  

        result = s.connect_ex((targetIP, i))  

        if(result == 0) :  
            print 'Port %d: OPEN' % (i,)  
        s.close()

3 个答案:

答案 0 :(得分:6)

你们一个接一个地打开千个连接。这必须至少花费1000次到服务器的往返时间。 Python与它无关,这只是网络的一个非常基本的事实。

你可以做些什么来加快速度,使用线程或基于事件的框架(如twisted)来并行打开连接。

答案 1 :(得分:5)

呃,这不是Python慢​​。只是你想要同时连接到1000个端口。

也许你可以让它们并行连接(即连接是非阻塞的),但我认为在你这样做之前你应该学习更多关于网络编程的知识。

答案 2 :(得分:4)

大多数标准

Python 都很慢。但是对于大多数代码而言,你注意的并不是那么慢。这个脚本花费的时间不会花在Python解释器上,而是等待I / O完成。尽管如此,网络I / O.你创建了一千个连接并对每个连接进行了一些嗅探,你一次只做一个连接 - 无论你用什么语言编写它都需要很长时间。