为什么绿化的数量会影响响应的经过时间



我正在使用Python协程库gevent和monkey补丁来增加http请求的并发性。但我注意到响应的经过时间增加了,而并发性增加了。示例代码下方:

import gevent
from gevent import monkey
import requests
monkey.patch_all(thread=False)

def action():
resp = requests.get("https://www.google.com")
if resp.status_code == 200:
print resp.elapsed.total_seconds()

jobs = []
for i in range(100):
jobs.append(gevent.spawn(action))
gevent.joinall(jobs)

当生成10个绿点时,经过的时间约为0.9秒,但当绿点数量增加到100个时,经过时间约为1.6~2.0秒。为什么会这样?

greenlet 仍然是单线程的,这意味着它们一次只能做一件事。 对于任何占用大量 CPU 资源的进程,这都会导致延迟。 是的,它是异步的,但它不是多处理的,所以如果某些东西使用 1 秒的 CPU,你已经将任何后续绿点的结果延迟了 1 秒。

因此,随着队列的增长,即使只是毫秒,延迟也会变得明显。

相关内容

  • 没有找到相关文章

最新更新