说在前面:用协程还是多线程需要仔细考量。我在做实验时请求了100w个ip,分别用pool为1000的协程和64个线程来跑,结果是多线程的速度是协程的10倍以上。
一个简单的协程例子
#!/usr/bin/env python #coding=utf-8 from gevent import monkey; monkey.patch_socket() import gevent.pool import gevent def do_something(ip): #在io时协程自动切换 #request ip pass def main(): pool = gevent.pool.Pool(1000) f = open("a_lot_of_ip.json", "r") g = [] for d in f.readlines(): ip = d pool.add(gevent.spawn(do_something, ip)) f.close() pool.join() if __name__ == "__main__": main()
时间: 2024-11-05 18:43:11