为什么 python 多线程还要比 gevent 要快一点?

2014-02-19 14:50:24 +08:00
 pc10201
代码如下,初学python,如有不正确的地方请大神指正
#coding=utf-8
import requests
import threading
import time
import Queue
geturl='http://192.168.1.41/login.php'#内部服务器地址,可以改成自己的
xrange_num=1000#设置循环总次数
con_num=20#设置线程数
start=time.time()
class testThread(threading.Thread):
def __init__(self,queue):
threading.Thread.__init__(self)
self.queue = queue

def run(self):
while 1:
try:
url= self.queue.get_nowait()
except Queue.Empty:
raise SystemExit
requests.get(url)

queue = Queue.Queue()
for x in xrange(xrange_num):
#line = line.strip()
queue.put(geturl)
threads = []

for dummy in xrange(con_num):
t = testThread(queue)
t.start()
threads.append(t)

# Wait for all threads to finish
for thread in threads:
thread.join()

print time.time()-start

import gevent
from gevent import monkey
monkey.patch_all()
from gevent.pool import Pool
import requests

start2=time.time()
p = Pool(con_num)
def down(url):
requests.get(url)

for x in xrange(xrange_num):
p.spawn(down, geturl)

p.join()
print time.time()-start2
raw_input()
5522 次点击
所在节点    Python
1 条回复
isofia
2017-03-08 16:05:22 +08:00
竟然一个回复都没有

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/100910

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX