Python asyncore и dbus

Действительно ли возможно интегрироваться asyncore с dbus через то же main loop?

Обычно, интеграция DBus сделана через glib основной цикл: действительно ли возможно иметь также asyncore интегрируйте этот основной цикл или имейте использование dbus asyncore?

6
задан jldupont 27 January 2010 в 18:27
поделиться

2 ответа

#!/usr/bin/perl -w

my @files = <*>;
foreach my $file (@files) {
  print $file . "\n";
}

где

 @files = <*>;

может быть

 @files = </var/www/htdocs/*>;
 @files = </var/www/htdocs/*.html>;

и т. Д.

-121--1436239-

Asyncore отстой. Glib уже обеспечивает асинхронизацию, поэтому просто используйте Glib MainLoop, чтобы сделать все.

7
ответ дан 16 December 2019 в 21:39
поделиться

Оберните выделенный текст тэгами:

    function! VisualTagsWrap()
        if !exists('g:tags_to_wrap')
            let g:tags_to_wrap=[]
        endif
        let g:tags_to_wrap=split(input('space separated tags to wrap block: ', join(g:tags_to_wrap, ' ')), '\s\+')
        if len(g:tags_to_wrap)>0
            execute 'normal! `>a</'.join(reverse(g:tags_to_wrap), '></').'>'
            execute 'normal! `<i<'.join(reverse(g:tags_to_wrap), '><').'>'
        endif
    endfunction


vnoremap <silent>,w <ESC>:call VisualTagsWrap()<CR>

выделите закрывающую скобку для тэгов:

set matchpairs+=<:>

фиктивный текст (введите «lorem» в режиме вставки):

inoreabbrev lorem Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.
-121--1395150-

Посмотрите на эту ссылку

, в которой описывается отчет об ошибке и исправления, которые могут его исправить.

set matchpairs+=<:>
set showmatch
set matchtime=3
-121--1395153-

Хотя вы получили то, что, вероятно, является вполне разумным ответом, существует другой подход - вам не нужно использовать асинхронный цикл как таковой. Просто вызовите asyncore.loop с нулевым тайм-аутом и числом 1, что останавливает его итерацию (и, таким образом, делает имя функции полностью вводящим в заблуждение) и опрашивает сокеты всего один раз. Называйте это так часто, как вам нужно.

Я ничего не знаю об асинхронной поддержке glib, но если это требует потоков, вы все равно можете получить лучшую производительность, используя asyncore таким образом, так как он будет использовать выбор или опрос и не нужно будет создавать дополнительные потоки.

0
ответ дан 16 December 2019 в 21:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: