![](/img/trans.png)
[英]using data from PyObjects in Python C Extension without holding the GIL
[英]Python: Plot some data (matplotlib) without GIL
我的問題當然是GIL。 在我分析數據時,最好在兩者之間展示一些情節(所以等待結果並不是太無聊)
但GIL阻止了這一點(這讓我開始問自己,Python本來就是一個好主意)。
我只能顯示情節,等到用戶關閉它並在此之后開始計算。 顯然浪費時間。
我已經嘗試過子進程和多處理模塊,但似乎無法讓它們工作。
對這個有什么想法嗎? 謝謝
編輯:好的,所以它不是GIL而是show()。
這不是來自matplotlib或GIL的問題。
在matplotlib中您可以打開任意數量的圖形,並在應用程序繼續執行其他操作時將它們放在屏幕中。
您必須在交互模式下使用matplotlib。 這可能是你的問題。
from matplotlib import interactive
interactive(True)
這應該是你的進口的頂部
這與GIL無關,只需修改分析代碼,使其不時更新圖形(例如每N次迭代)。
只有這樣,如果您看到繪制圖形會使分析代碼過於緩慢,請將圖形更新代碼放在具有多處理功能的子流程中。
我認為您需要將圖形放入適當的Windowing系統,而不是依賴於內置的show代碼。
也許在另一個線程中堅持使用.show()就足夠了?
GIL是無關緊要的 - 你有一個阻塞的show()調用,所以你需要先處理它。
似乎draw()方法可以避免使用show()。
在腳本中留下.show()的唯一原因是讓它執行阻塞部分,以便在腳本到達結尾時圖像不會消失。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.