我試圖在Python中實現插件體系結構。Python中插件體系結構的多處理或多線程處理
我已經開始使用Threading
模塊,其中每個插件是我調用使用Thread.start()
方法的線程寫它(因爲所有的插件子類BasePlugin
其子類Thread
)。但是我剛剛遇到了multiprocessing
模塊。
目前我不知道我是否應該切換到multiprocessing
模塊,並使用共享內存/管材等共享數據...
我想獲得這個別人的意見。
的插件架構,我一直在工作的工作如下:由Plugin Manager
收到
的事件。 Plugin Manager
檢查所有訂閱了該類型事件的插件。它激活它們並向它們發送事件對象(因爲它包含附加信息)。如果其中一個插件已經激活,則不需要產生它(只需將事件對象發送給它)。
此外,還有一些資源只能在任何時間點屬於一個插件。每個插件都可以請求資源(我不擔心任何競爭情況,因爲一次不會有很多插件活動)。
「一個寫得不好的插件,如果它在一個線程中,可能會導致整個程序崩潰」 - 你說得對。這就是爲什麼我給任何想寫插件的人(主要是我)一個乾淨的API,所以沒有什麼不好的事情會發生。 – Shookie 2014-11-08 15:51:12
優秀!儘管請記住一個線程可以完全訪問。所以,如果我正在編寫一個插件,並決定用一個空字符串替換一些中央數據結構,那麼我可以做到這一點。但是,如果這個插件系統只會在內部使用,那麼我認爲這是一個有爭議的問題。 – aychedee 2014-11-08 15:58:22