【问题标题】:Should unit tests run faster with a gevent patched codebase?单元测试是否应该使用 gevent 补丁代码库运行得更快?
【发布时间】:2013-04-26 10:12:55
【问题描述】:

我们正在研究 gevent 作为 Flask API 的性能增强器。在我们的代码库中有很多关于 psycopg2 和 Redis 的通信。我们认为我们会尝试在有和没有的情况下运行测试套件:

import gevent.monkey
gevent.monkey.patch_all()
import psycogreen.gevent
psycogreen.gevent.patch_psycopg()

我的理解是,patch_all() 通过让其他线程在等待返回调用时执行工作,使标准库中的许多阻塞调用总体上更有效。

我们的单元测试总共需要大约 160 秒才能运行,gevent 修补和未修补之间的差异可以忽略不计。我们应该在我们的测试套件中看到 gevent 的强大功能,还是它只在现实生活中的生产环境中展现出来?

更多信息:使用 py.test 运行非常常规的 python-2.7.2 单元测试。 Gevent 1.0rc2.

【问题讨论】:

    标签: python unit-testing flask psycopg2 gevent


    【解决方案1】:

    您的理解是正确的,但是您是在并行运行测试吗?也许using nose?我的理解是 gevent 不会真正提高任何线性代码路径的“直线速度”,它是一种在单个进程中启用并发的机制。

    【讨论】:

    • 我已经研究过鼻子,但它不适用于我们的用例,因为我们在单个 Postgres 事务中运行我们的测试(为了速度),所以进程锁定了整个数据库。但我想这值得研究。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    相关资源
    最近更新 更多