2015-01-30 5 views
1
def cn(host, port): 
    try: 
     conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
     conn.connect((host, port)) 
     print '[+]%d/tcp open' % port 
     conn.close() 
    except: 
     pass 
     #print '[-]%d/tcp closed' % port 

def ge(): 
    st = time.time() 

    threads = [gevent.spawn(cn, '127.0.0.1', i) for i in xrange(1000)] 
    gevent.joinall(threads) 

    print "using gevent - " + str(time.time() - st) 

def ss(): 
    st = time.time() 

    for i in range(1, 1000): 
     connScan('127.0.0.1', i) 

    print "using sync processing - " + str(time.time() - st) 

Gevent просто немного быстрее, чем обработка синхронизации. Зачем?Gevent против синхронизации для сканирования, почему они примерно одинаковой скорости?

Возможно ли улучшить приведенный выше код, чтобы ускорить его использование с помощью gevent?

ответ

1

Большинство портов закрыты, поэтому нет блокировки, чтобы получить ускорение от версии gevent.

+0

После работы с резьбой Python больше, gevent был самым быстрым способом сделать это. Несмотря на неблокирование. –