[pyar] Tiempo real de ejecución de un threading.Thread
Marcos Dione
mdione en grulic.org.ar
Vie Ene 5 14:49:38 ART 2018
On Fri, Jan 05, 2018 at 11:38:21AM -0300, Andres Riancho wrote:
> Tengo un software escrito en Python 2.7 que hace uso extensivo de
> threads. Como sabemos, Python solo ejecuta un thread en simultaneo,
> dejando a los otros threads en "pausa" hasta que el Linux kernel
> scheduler decide ejecutarlo nuevamente.
No completamente cierto. Cuando un thread hace una syscall o llama a
una función implementeda en C, el GIL es soltado, así que otro thread
puede usar el CPU en ese momento.
> ```
> def worker(params):
> start = time.time()
> some_task(params)
> spent = time.time() - start
> log('some_task() took %s seconds to run' % spent)
> ```
ahí estás calculando lo que se llama 'wall time'.
> Como puedo hacer para obtener el tiempo real dedicado al thread,
> sin incluir el tiempo que el mismo estuvo en pausa?
una punta va porái:
https://docs.python.org/2.7/library/os.html#os.times
de ahí a:
https://hg.python.org/cpython/file/v2.7.13/Modules/posixmodule.c#l6430
https://linux.die.net/man/2/times
viendo los see also:
https://linux.die.net/man/2/getrusage
RUSAGE_THREAD (since Linux 2.6.26)
Return resource usage statistics for the calling thread.
te la dejo picando :)
--
(Not so) Random fortune:
The technology industry sees itself as in rebellion against corporate
America: not corrupt, not buttoned-up, not empty. In fact, a tech company
can be as corrupt, soulless, and empty as any corporation, but being
unprofessional helps us maintain the belief that we are somehow different
from Wall Street.
-- Shanley Kane
Más información sobre la lista de distribución pyar