我有一个使用多处理(特别是 joblib)的函数来加速使用多个内核的慢例程。效果很好;没有问题。
我有一个使用多处理的测试套件(目前只是 multiprocessing.Pool() 系统,但可以将其更改为 joblib)来独立运行每个模块的测试功能。效果很好;没有问题。
问题是我现在已经将多处理功能集成到模块的测试套件中,以便池进程运行多处理功能。我想让它让内部函数知道它已经被多处理并且不会启动更多自己的分支。目前内部进程有时会挂起,但即使没有,显然在已经并行的例程中进行多处理也没有任何好处。
我可以想到几种方法(使用锁定文件,设置某种全局变量等)来确定我们所处的状态,但我想知道是否有一些标准的方法来解决这个问题(在 PY 多处理中)或在joblib中)。如果它只适用于 PY3,那很好,但显然也适用于 2.7 或更低版本的解决方案会更好。谢谢!