ты правильно понимаешь. создается один гринлет с таймаутом 0.1 сек. оптимально я думаю так:
#!/usr/bin/env python
import sys
import gevent
from gevent import socket
from gevent.pool import Pool
from time import time
def ip2url(ip):
try:
url = socket.gethostbyaddr(ip)
found.append(ip +' : '+ url[0])
except:
pass
if __name__=="__main__":
#addrs = ['173.194.222.%s' % i for i in range(1,255)] #google
#addrs = ['87.250.250.%s' % i for i in range(1,255)] #yandex
#addrs = ['94.100.180.%s' % i for i in range(1,255)] #mail.ru
addrs = ['81.19.82.%s' % i for i in range(1,255)] #rambler
pool = Pool(10)
found = []
t1 = time()
with gevent.Timeout(5,False):
for addr in addrs:
pool.spawn(ip2url,addr)
pool.join()
t2 = time()
for i in found: print i
print 'time:',t2 - t1,'found:',len(found)
sys.exit()
создается пул из 10 гринлетов с суммарным таймаутом 5 сек
но тут много факторов - сколько серверов в цепочке, кэшируют ли они запросы, как у них система безопасности настроена и т.д. у тебя на виртуалке днс сервер поднят ? имхо смысл есть тока реальные адреса сканить, но если админ не спит, за такие зксперименты вполне реально люлей огрести -
IDS