例如,如果一个应用程序执行from twisted.internet import reactor
,而另一个应用程序执行相同的操作,则这些reactors
是否相同?在
我之所以这么问是因为Deluge,一个使用twisted的应用程序,看起来像是使用reactor将他们的UI(gtk)连接到twisted驱动的应用程序的其余部分(我正在试图理解源代码)。例如,当UI关闭时,它只需调用reactor.stop()
。在
就这些吗?对我来说这有点神奇。如果我想运行另一个使用twisted的应用程序呢?在
Tags:
是的,Python中的每个模块都是全局的,或者更好地说,是一个单独的模块:当您执行},如果存在,则返回所述值;仅当它不存在时(即。,{future}第一次可能是导入一个模块。在
from twisted.internet import reactor
操作时,Python的导入机制首先检查{在单例设计模式中没有什么特别神奇的东西,尽管有时候当你迫切需要一个以上的东西时,它会被证明是有限的,而架构已经规定“只有一个”。Twisted的docs确认:
如果这对你的应用程序很重要,那么最好的办法就是为Twisted项目做出贡献,要么是人工(在一个应用程序中编写支持多个反应堆所需的微妙机制,也就是说,多个事件循环)或资助(资金将使某个人能够获得津贴,从而完成这项工作)。在
否则,使用单独的进程(例如,使用标准库的
multiprocessing
模块),每个进程不超过一个反应器。在这个反应堆确实是全球性的。它负责事件循环,并注册处理程序来使用事件。如果您想在同一个reactor中使用多个应用程序,可以使用twistd守护程序。http://twistedmatrix.com/documents/current/core/howto/application.html
相关问题 更多 >
编程相关推荐