我们正在研究gevent作为Flask API的性能增强器。我们的代码库中有很多关于psycopg2和Redis的通信。我们以为我们会尝试使用和不使用测试套件:
import gevent.monkey
gevent.monkey.patch_all()
import psycogreen.gevent
psycogreen.gevent.patch_psycopg()
我的理解是patch_all()
通过让其他线程在等待返回调用时执行工作,使整个标准库中的许多阻塞调用更有效。
我们的单元测试总共运行大约160秒,gevent patched和non-patched之间的差异可以忽略不计。我们是否应该在我们的测试套件中看到gevent的强大功能,还是仅仅在现实生产环境中展示自己?
更多信息:使用py.test运行非常规的python-2.7.2 unittest。 Gevent 1.0rc2。
答案 0 :(得分:1)
您的理解是正确的,但您是否并行运行测试?也许using nose?我的理解是,gevent不会真正提高任何线性代码路径的“直线速度”,它是一种在单个进程中实现并发的机制。