我試圖在一個模塊中使用Python的汽車總線系統的分析軟件。爲此,我必須以線程安全的方式嵌入Python,因爲可以有多個獨立工作的模塊實例。我可以使用一個互斥體來保護對Python的所有訪問,併爲每個線程創建一個唯一的(python)模塊。顯然,這是最簡單的方法,但不能跨多個核心進行擴展。或者我可以修改我的模塊以產生新的進程,這些進程使用Python並通過共享內存連接到它們。這給我一個性能損失,需要花費更多時間來實現,但規模很大。嵌入Python線程安全
我的問題:女巫你認爲更有意義嗎?有沒有其他方法可以安全地嵌入Python線程,甚至可以通過擴展多個內核的方式來嵌入Python線程。
親切的問候莫里茨
編輯:我使用的是CPython的
這取決於你在Python中做的東西有多複雜,但在一般情況下,我會說使用多個解釋器是正確的方法。它將大大提高靈活性和可伸縮性(同時讓你在GIL周圍),而且你不需要每個線程模塊。我認爲你的項目的其他開發人員可以更容易地獲得結果,而且更通用。 – Olson 2010-10-15 17:03:04
嗨Jagerkin如果你再次發表你的評論作爲答覆,我會接受它。 – JustMaximumPower 2010-10-19 07:36:40
@Jagerkin:這正是'multiprocessing'庫的功能。同時生成兩個Python解釋器並不像最初聽起來那麼簡單,因爲您將不得不關注進程/線程同步和線程間/進程間通信。多處理庫已經爲你做了大部分的努力工作,它有「隊列」,「管道」,「池」,「共享值」的多進程版本,透明地對IPC /共享內存上的對象進行序列化和反序列化,以及「鎖定」通過多次處理同步,這樣你就不必自己做。 – 2010-10-19 11:10:20