我试图在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