簡體   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