Closed fzuccolo closed 3 years ago
Hola de nuevo @fzuccolo me interesa participar en ese issue pero podrías por favor explicarme un poco en español? es que no se si fue por el inglés pero no entendí muy bien
@y-martinez Por supuesto!
La generación de CDPedia, por ej. mediante el comando python cdpetron.py --test-mode ../dump es -v
, produce un log con mucha info en la terminal. Las líneas a las que refiere el issue aparecen hacia el final, durante la construcción del índice (siempre que se use -v
o --verbose
en el comando).
Lo que sucede es que la barra que indica el progresso de dicha operación Tokens |##################### | 546/796
se mezcla con cada línea del output y esto dificulta la legibilidad. Idealmente, dicha barra debería ir "desplazándose hacia abajo" a medida que se van imprimiendo nuevas líneas.
Ahh ok ya entendí, si ya vi cual es el problema lo acabo de generar usando el -v
y noté lo que dices, bueno si me gustaría trabajar en el issue. Efectivamente una solución sería usar un print()
pero no es lo ideal, buscaré otra opción pero igualmente la pregunta es, ¿Habría algún problema de que la solución sea con ese approach del print
?
Al utilizar el print
, la barra se imprime debajo de cada línea, lo cual también quita legibilidad. Debería haber alguna manera de que la barra "se desplace" sin duplicarse, algo así:
2020-11-04 10:44:45,107 src.armado.sqlite_index DEBUG Word: inteligencia <Docset: len=1 {573: 1}>
Tokens |############################## | 658/680
2020-11-04 10:44:45,107 src.armado.sqlite_index DEBUG Word: inteligencia <Docset: len=1 {573: 1}>
2020-11-04 10:44:45,108 src.armado.sqlite_index DEBUG Word: artificial <Docset: len=1 {573: 2}>
Tokens |############################### | 659/680
2020-11-04 10:44:45,107 src.armado.sqlite_index DEBUG Word: inteligencia <Docset: len=1 {573: 1}>
2020-11-04 10:44:45,108 src.armado.sqlite_index DEBUG Word: artificial <Docset: len=1 {573: 2}>
2020-11-04 10:44:45,109 src.armado.sqlite_index DEBUG Word: sarasa <Docset: len=1 {573: 3}>
Tokens |############################### | 660/680
Issue asignado, no dudes en consultar!
Si lo pude notar ayer, de acuerdo a la investigación que he hecho la librería progress
tiene ese defecto, estoy probando otras opciones con diferentes librerías
https://towardsdatascience.com/a-complete-guide-to-using-progress-bars-in-python-aa7f4130cda8
@NicolasSandoval me comentó que esto se puede solucionar agregando un \r
al final de la status bar. Esto mueve el cursor al inicio de línea, y el output del logger debería sobrescribirla.
La clase Bar
de la librería progress
que estamos usando acepta parametros opcionales: https://github.com/verigak/progress/blob/ca6310204e397999ac61ad69f8fba6a7fc775069/progress/bar.py#L25
Una opción sería probar si agregando el parámetro suffix='%(index)d/%(max)d\r'
al inicializar la clase soluciona el inconveniente.
Ok funciona usando solo el retorno de linea, yo había probado era usando la combinación usual de \r\n
pero solamente con el retorno efectivamente funciona. Gracias por la ayuda @fzuccolo y @NicolasSandoval en unos momentos subo el PR
Current output in debug mode:
I think debug output should be in its own line (for consistency). A simple but inelegant solution is to add a
print()
before:https://github.com/PyAr/CDPedia/blob/cc55377fd11808df7b58f539cabae6ee33042ce1/src/armado/sqlite_index.py#L509