Я хочу интегрировать некоторые asyncore.dispatcher
экземпляры в основной контекст GLib по умолчанию .
Я полагаю, что могу создать пользовательский GSource
, который сможет определять готовность к событию на различных сокетах в asyncore.socket_map
. Из C я полагаю, что это достигается созданием необходимых GSourceFuncs
, которые могут включать дешевые и неблокирующие вызовы для выбора, а затем обрабатывать их с помощью asyncore.read, .write и friends.
Как мне на самом деле создать GSource из Python? Класс glib.Source недокументирован , и попытки использовать класс в интерактивном режиме были тщетными.
Есть ли какой-то другой метод, который позволяет мне обрабатывать события сокетов в модуле asyncore
без использования тайм-аутов (или чего-либо, что угрожает потенциальной пропускной способности и использованию процессора)?