python - 我可以在单元测试的设置阶段编译 numba 吗?

标签 python nose python-unittest numba

我使用 numba 使用 autojit 装饰器来加速我的部分 Python 代码。测试通过并且 %timeit 表明代码确实被加速了。

第一次执行很慢,我猜是因为 numba 正在编译代码。说得通。但是,当我运行一组测试时,它们运行极度慢,从我更改之前大约 10 秒的 10 个测试到 117 秒的相同测试。看来 numba 必须一次又一次地编译,分别为每个测试。

我可以避免这种情况吗?我曾尝试在 setUp 函数中运行一个简单的测试,认为可能会为所有测试编译一次该函数,但这并没有显着改变运行时间。

最佳答案

这样的事情可能会起作用:

from numba import autojit

def autojit_except_when_unit_testing(func):
    if UNIT_TESTING:
        return func
    return autojit(func)

可能还会解决 numba 关于缓存的问题,因为这是一个非常重要的用例。我通常会很犹豫要不要在如此不同的环境中运行单元测试和生产代码,但永远不会运行的单元测试不会经常运行。您几乎肯定也应该使用 numba 进行测试,只是频率要低一些。

关于python - 我可以在单元测试的设置阶段编译 numba 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21370102/

相关文章:

python - 我有 12000 个已知 URL,用 Python 抓取它们的最快方法是什么?

python - Django:表单验证接受首字母大写的字符串

Python单元测试: How to assert the existence of a file or folder and print the path on failure?

python - 在单元测试中修补时,Celery 任务调用的函数没有调用?

python - Python 包上的 SSL 错误

python - Nose:基于 TestCase 的类的生成器

python - 以机器可读的形式列出 Nose 的测试

python - 强制 nosetests 在以下划线开头的模块中查找 doctests

pandas - 在单元测试中创建 Pandas 数据框

python - NOT NULL 约束失败 : portal_visitrequests. guest_id