4 votos

Obtener registro de funciones internas llamadas por qgis

¿Hay alguna forma de saber qué funciones internas de python utiliza QGIS?

por ejemplo, cuando hago clic en el botón "agregar capa vectorial", me gustaría saber las funciones que llama QGIS.

Simplificaría enormemente la automatización de tareas con QGIS.

4voto

Mat Puntos 196

Suena como una herramienta de creación de perfiles puedan ser de su interés. Sin embargo, en la situación que se dio, es posible que la interfaz de usuario de la señal no se disparará el código de python. Pero esto podría ayudar con python plugins (que incluye el procesamiento y gestor de plugins, que son también escrito en python)

Por suerte python 2.7 viene con un perfilador (en realidad, dos de perfil y cProfile)

En su QGIS consola, intente abrir un editor, y el uso de un fragmento de pyqgis código (yo usé un poco de código a partir de otra pregunta que vi recientemente, se puede sustituir con su propio código)

from PyQt4.QtGui import QColor
import profile

def dostuff():
    r = iface.activeLayer().rendererV2()
    for s in r.symbols():
        s.symbolLayers()[0].setOutlineColor(QColor('#ffffff'))
    iface.mapCanvas().refresh()
    return True

profile.runctx("dostuff()",globals(),locals())

Esto da el siguiente resultado

425 function calls in 0.004 seconds

Ordered by: standard name

ncalls  tottime  percall  cumtime  percall filename:lineno(function)
    1    0.000    0.000    0.000    0.000 :0(activeLayer)
    1    0.000    0.000    0.000    0.000 :0(mapCanvas)
    1    0.000    0.000    0.000    0.000 :0(refresh)
    1    0.000    0.000    0.000    0.000 :0(rendererV2)
  208    0.000    0.000    0.000    0.000 :0(setOutlineColor)
    1    0.000    0.000    0.000    0.000 :0(setprofile)
  208    0.000    0.000    0.000    0.000 :0(symbolLayers)
    1    0.000    0.000    0.000    0.000 :0(symbols)
    1    0.000    0.000    0.004    0.004 <string>:1(<module>)
    1    0.004    0.004    0.004    0.004 Untitled-3.py:4(dostuff)
    1    0.000    0.000    0.004    0.004 profile:0(dostuff())
    0    0.000             0.000          profile:0(profiler)

Esto le dará al menos una pista de los nombres de los métodos que se llama. Como un bono, usted puede encontrar que están tomando más tiempo (que es lo que el perfil está realmente acerca de).

Tener en cuenta una gran cantidad de la pyqgis métodos son enlaces hacia subyacente a funciones de C++, por lo que esto sólo ir a la python/C++ límite.

Hay varias otras maneras de formato y visualización de los datos, para que usted necesitará los documentos, ya que esto no es algo que me tiene un montón de experiencia con. Esperamos que sea un puntero en la dirección correcta :)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X