繁体   English   中英

Python asyncore&dbus

[英]Python asyncore & dbus

是否可以通过相同的main loopasyncoredbus集成?

通常,DBus集成是通过glib主循环完成的:是否可以让asyncore集成这个主循环让dbus使用asyncore

asyncore糟透了。 glib已经提供了异步的东西,所以只需使用glib的mainloop来做所有事情。

我为自己的一个名为AsyncoreGSource 的项目编写了一个简单的GSource包装器

只需附加到适当的MainContext

source = AsyncoreGSource([socket_map])
source.attach([main_context])

当然,默认值分别是asyncore.socket_map默认的MainContext

您也可以尝试使用猴子修补asyncore.socket_map ,如果我没有通过GSourceGLib python绑定源代码进行GSource ,那将是我的解决方案。

虽然你得到的可能是一个非常合理的答案,但还有另一种方法 - 你本身不需要使用asyncore的循环。 只需调用asyncore.loop,其超时为零,计数为1,这将停止迭代(从而使函数名称完全误导)并仅轮询插槽一次。 根据需要经常调用它。

我对glib的异步支持一无所知,但如果它需要线程,你可能会通过这种方式使用asyncore来获得更好的性能,因为它将使用select或poll而不需要产生额外的线程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM