gpt4 book ai didi

python - 在 GIL 之外使用 scipy 例程

转载 作者:行者123 更新时间:2023-11-28 22:30:29 27 4
gpt4 key购买 nike

这是一个与我想到的特定实现相关的一般性问题,关于在共享内存环境中使用设计用于 GIL 内部的 python 例程是否安全。具体来说,我想做的是在 cython 函数内的大型数组上使用 scipy.optimize.curve_fit

数据可以表示为 2d numpy 数组(例如, float ),其中一个轴是适合的,另一个是要并行化的序列化轴。然后我只想释放 GIL 并开始使用 cython.parallel.prange 循环遍历数据(当时的想法是我可以让我的所有核心同时进行拟合)。

我可以预见的主要问题是 curve_fit 没有“就地”运行;它返回参数的拟合值(以及可选的它们的协方差矩阵),因此必须在某个时候分配该内存。 (当然,我也不知道例程执行的任何中间内存分配。)我担心这将如何在 GIL 之外运行,同时有许多线程同时工作。

我意识到答案可能只是“它应该可以正常工作,去试试吧”,但我希望了解需要注意的事项。我也意识到这个问题与其他关于并行化 scipy/numpy 例程的问题类似,但我认为这个问题的措辞不同,因为它属于 cython python C 环境的范围。

感谢任何帮助/建议。

最佳答案

不安全。如果 CPython 可以在没有 GIL 的情况下安全地运行这种代码,那么我们一开始就不会拥有 GIL。

关于python - 在 GIL 之外使用 scipy 例程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42148101/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com