[Python] gestire processi figli

Giampaolo Rodola' g.rodola a gmail.com
Dom 1 Dic 2013 10:56:31 CET


2013/12/1 Roberto De Ioris <roberto a unbit.it>:
>
>> 2013/11/30 Manlio Perillo <manlio.perillo a gmail.com>:
>>> On 30/11/2013 13:18, Roberto De Ioris wrote:
>>>>
>>>> [...]
>>>>>
>>>>> Inoltre, curiosità personale visto che non ho mai fatto test, quale è
>>>>> la
>>>>>
>>>>> differenza tra sigtimedwait e kqueue + apposito filtro o epoll +
>>>>> signalfd?
>>>>>
>>>>>
>>>>
>>>> che kqueue non usa i segnali, quando un processo muore tutti i poller
>>>> in
>>>> ascolto vengono svegliati dal kernel.
>>>
>>>
>>> Vero, hai ragione; ricordavo male.
>>> kqueue ha sia il filtro EVFILT_PROC che EVFILT_SIGNAL.
>>> Io stavo assumendo il solo EVFILT_SIGNAL, che dovrebbe funzionare come
>>> signalfd su Linux, credo/spero.
>>>
>>>
>>>> Praticamente non hai nessuno dei
>>>> problemi dei segnali unix e (soprattutto) non ti costringe a modificare
>>>> la
>>>> logica del tuo programma (o a fare trucchi strani, tra cui includo il
>>>> mio
>>>> poller su waitpid suggerito nella mail di prima).
>>>>
>>>> Purtroppo su Linux kqueue non c'e' :)
>>>>
>>>
>>> Già, ed un poco alla volta mi sembra stiano aggiungendo interfacce per
>>> fare
>>> quello che kqueue fa già! A quando procfd? :)
>>>
>>> Peccato, perchè se Linux avesse implementato kqueue, c'era una remota
>>> possibilità di vederlo standardizzato da POSIX entro il prossimo
>>> decennio..
>>
>> E' meglio di epoll()? Perchè?
>>
>
> "meglio" e' relativo.
>
> Sono diverse, a cominciare dal fatto che kqueue non si limita a monitorare
> file descriptors (ma anche processi, inode, timer...). E' una interfaccia
> generica per la programmazione ad eventi.
>
> Con una sola syscall fai tutto, in linux ne viene aggiunta una nuova per
> ogni funzionalita' (timerfd, eventfd, signalfd, blahblahfd...) poiche' si
> preferisce vedere tutto come un "file descriptor".
>
> Non so quali dei due approcci sia migliore, ma kqueue e' arrivata prima e
> piaceva a tutti, portandola su linux avremmo (forse) avuto meno mal di
> testa

Capisco.
Mi sento però di spezzare una lancia a favore di epoll() per la
maggiore facilità di utilizzo. =)

--- Giampaolo
https://code.google.com/p/pyftpdlib/
https://code.google.com/p/psutil/
https://code.google.com/p/pysendfile/


Maggiori informazioni sulla lista Python