假設我有一個C(++)函數取一個整數,並且它與python api綁定到(C)python,所以我可以從python調用它:使用線程在python中調用多個C++函數
import c_module
c_module.f(10)
現在,我想並行化它。問題是:在這種情況下GIL如何工作?假設我有一個要處理的數字隊列,一些工作者(threading.Thread
)並行工作,每個工作者都調用c_module.f(number)
,其中number
是從隊列中獲取的。
當GIL鎖定解釋器時,與通常情況的區別在於,現在您不需要解釋器來評估c_module.f
,因爲它已編譯。所以問題是:在這種情況下,處理是否真的平行?
我不認爲通過在python中使用線程會得到很多速度。一個更好的方法是使用OpenMP來並行化數字處理fortran函數並將其與向量化數據一起調用。 – 2010-05-12 21:38:33