[pyar] abc.py:__instancecheck__ consumiendo CPU

Andres Riancho andres.riancho en gmail.com
Mie Abr 23 15:23:14 ART 2014


2014-04-23 15:18 GMT-03:00 Roberto Alsina <ralsina en netmanagers.com.ar>:
> On 23/04/14 15:13, Andres Riancho wrote:
>>
>> Roberto,
>>
>> 2014-04-23 14:36 GMT-03:00 Roberto Alsina <ralsina en netmanagers.com.ar>:
>>>
>>> On 23/04/14 14:28, Andres Riancho wrote:
>>>>
>>>> Lista,
>>>>
>>>>       Siguiendo con mis emails sobre profiling y optimizaciones les
>>>> quería consultar sobre algo raro que estoy viendo [0]. Basicamente lo
>>>> que ocurre es:
>>>>
>>>>           * Corro w3af con CPU profiling
>>>>           * Cargo el profiling en runsnake
>>>>           * Veo que un porcentaje considerable del tiempo de CPU esta
>>>> siendo utilizado en __instancecheck__ (ver imagen).
>>>>
>>>>       Busco en mi codigo y no estoy utilizando este metodo magico. Lo
>>>> que si utilizo bastante son llamadas a "isinstance" para asegurarme
>>>> que los tipos de datos en algunos lugares son los correctos.
>>>>
>>>>       Según runsnake tengo 1.2M de llamadas a __instancecheck__ , cada
>>>> una corriendo en 0.00003segundos. El total de tiempo que se ocupa en
>>>> esta funcion es de 37seg (aprox).
>>>>
>>>>       Alguien se topo con esto antes? Puede ser que no este relacionado
>>>> con "isinstance" y tenga algo que ver con este otro bug en python [1]?
>>>>
>>>> [0] http://i.imgur.com/lfiL6X2.png
>>>> [1] http://bugs.python.org/issue1438
>>>>
>>>> Saludos,
>>>
>>> Si tenes el dato de profiling, podes ver quien llama a __instancecheck__
>>> usando pstats:
>>>
>>> http://stefaanlippens.net/python_profiling_with_pstats_interactive_mode
>>
>> Gracias, eso no se me habia ocurrido (aunque era lo obvio a probar!)
>> lo que obtuve fue [1]. En otras palabras, al parecer yappi [0], el
>> profiler que estoy usando, no sabe nada sobre los callers de
>> __instancecheck__ . Notar que aunque hay millones de llamadas a la
>> funcion, no hay callers :S
>>
>> [1] https://gist.github.com/andresriancho/11226670
>> [0] https://pypi.python.org/pypi/yappi/
>>
>
> Sospecho que eso es porque estas limitando a abc.py y seguramente a
> __instancecheck__ lo llama alguna otra cosa.

Pero si te fijas en los callers de abc.py:148(__subclasscheck__)
(linea de abajo a la que estabas viendo) te das cuenta que hay cosas a
la derecha que son de otros files.

> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar



-- 
Andrés Riancho
Project Leader at w3af - http://w3af.org/
Web Application Attack and Audit Framework
Twitter: @w3af
GPG: 0x93C344F3


More information about the pyar mailing list