从源代码编译 Python:用于测试的多个线程?

dan*_*451 4 python makefile compilation

我使用以下源代码编译 Python 3.6

./configure --enable-optimizations --prefix=/local/py/path
make -j8
Run Code Online (Sandbox Code Playgroud)

编译本身在传递-j8make. 但是,由于我也使用--enable-optimizations我读到不建议跳过测试,但是测试按顺序运行并且在一个线程上运行,从而导致编译时间很长。

有什么我可以做的让测试在多个线程上执行吗?

Ond*_* K. 7

我构建 Python 的频率并不高,不足以促使我仔细查看(每次发布后一两次),但你给了我额外的冲动,我也闲逛了一下。

我认为您指的是(当前)作为构建默认目标的一部分执行的 406 测试。那将意味着它的run_profile_task目标Makefile。它python -m test.regrtest --pgo与您在PROFILE_TASKmake 变量中定义的新构建的解释器一起运行。

长话短说,而不是:

make -j8
Run Code Online (Sandbox Code Playgroud)

你可以运行:

make PROFILE_TASK="-m test.regrtest --pgo -j8" -j8
Run Code Online (Sandbox Code Playgroud)

它只是重复默认定义(截至目前)并附加-j8,这与 make 使用的相同。

由于我是一个好奇的人,我不得不尝试比较两者。在我目前启动的机器上(不是非常强大的笔记本电脑),它将回归测试时间从 ~23 分钟减少到 ~8 分钟。所以,谢谢你找个借口环顾四周,这可能会派上用场。:)