2011-08-01 26 views
8

Tengo un programa relativamente simple (sin clases) de Python 2.7. Lo primero que hace el programa es leer una base de datos sqlite en un diccionario. La base de datos es grande, pero no enorme, alrededor de 90 Meg en el disco. La lectura tarda unos 20 segundos. Después de leer en la base de datos inicializo algunas variables, p.¿Por qué la depuración en eclipse/pydev es tan lenta para mi programa python?

localMax = 0 
localMin = 0 
firstTime = True 

Cuando depurar este programa en Eclipse-3.7.0/PyDev - incluso estas líneas simples - cada solo paso en el depurador come hasta 100% de un núcleo, y tarda entre 5 y 10 segundos. Puedo ver que el proceso de Python va al 100% de la CPU durante 10 segundos. Un solo paso ... espere 10 segundos ... un solo paso ... espere 10 segundos ... Si depuro en la línea de comandos simplemente usando pdb, no hay problemas. Si no estoy depurando, el programa se ejecuta a velocidad "normal", nada extraño como en Eclipse.

He reproducido esto en un PC de doble núcleo Win7 con memoria 4G, mi 8 base de Ubuntu con w/8G de memoria, e incluso mi Mac Air. ¿Cómo es eso para el desarrollo multiplataforma? Seguí pensando que funcionaría en algún lugar. Nunca estoy cerca de quedarme sin memoria en ningún momento.

En cada Eclipse de un solo paso, ¿por qué el proceso de python pasa al 100% de la CPU y tarda 10 segundos?

+3

idea, pero tengo la corazonada de que podría estar relacionado con la vista del depurador Eclipse que intenta generar variables locales en la ventana de vigilancia y de alguna manera este proceso está fallando (por ejemplo, intenta imprimir un volcado de la base de datos SQlite como una cadena) La única forma de avanzar con esto es publicar un código fuente completo del programa que exprese el problema de manera repetible. –

+0

[Esto puede salvarle el día] (http://www.jetbrains.com/pycharm/) –

+1

En mi experiencia, me he enfurecido tantas veces con el eclipse tomando tanta memoria y he tardado en algunas partes que decidí aprender pdb. Es el camino antiguo, pero es rápido y nunca te fallará. Yo uso una versión mejorada llamada ipdb por cierto. – Hassek

Respuesta

7

Aquí hay una solución bastante buena, basada en la pista de Mikko Ohtamaa. Acabo de verificarse lo siguiente en mi Mac Aire:

  • Si sólo tiene que cerrar la ventana de 'variables' en la interfaz gráfica de usuario de Eclipse, que pueda solo paso a través del código a velocidad normal. Lo cual es genial, pero, uh, no tengo la ventana Variables.
  • Para cualquier variable que quiera ver, puedo pasar el cursor sobre la variable y ver el valor. No intenté pasar el ratón sobre mi gran diccionario que es el culpable aquí.
  • También puedo hacer clic derecho en cualquier variable y agregar un 'Mirar', que muestra una ventana 'Expresiones'. En este caso, la variable es solo un caso degenerado (caso muy simple) de una expresión.

Por lo tanto, la solución para mí es cerrar la ventana Variable Eclipse y usar la ventana Expresiones para ver variables selectivamente. Un dolor, pero para la depuración lo estoy haciendo mejor que pdb.

1

simplemente me comentó esta línea Salida:

np.set_printoptions(threshold = 'nan') 

Parece Eclipse está tratando de mantenerse al día con demasiada información.

+2

¿dónde está ubicada esta línea? – Paolo

Cuestiones relacionadas