Kill the Dead (Sandman Slim, #2)
![]() |
Review:This is not a book. It's the second half of "Sandman Slim". Read that and then decide if you actually want to read this second half or not. |
![]() |
Review:This is not a book. It's the second half of "Sandman Slim". Read that and then decide if you actually want to read this second half or not. |
![]() |
Review:Not horrible. The language is an impossible high-noirish pastiche. Fun. |
Qt tiene sus mecanismos para crear y eliminar objetos (el árbol de QObjects, smart pointers, etc.) y PyQt usa Python, así que tiene garbage collection.
Consideremos un ejemplo simple:
from PyQt4 import QtCore def finished(): print "El proceso termino!" # Salir de la aplicación QtCore.QCoreApplication.instance().quit() def launch_process(): # Hacer algo asincrono proc = QtCore.QProcess() proc.start("/bin/sleep 3") # Cuando termine, llamar a finished proc.finished.connect(finished) def main(): app = QtCore.QCoreApplication([]) # Lanzar el proceso launch_process() app.exec_() main()
Si ejecutás eso, te va a pasar esto:
QProcess: Destroyed while process is still running. El proceso termino!
Encima el script no termina nunca. ¡Diversión! El problema es que proc
está siendo borrado al final de launch_process
porque no hay más referencias a él.
Ésta es una mejor manera de hacerlo:
from PyQt4 import QtCore processes = set([]) def finished(): print "El proceso termino!" # Salir de la aplicación QtCore.QCoreApplication.instance().quit() def launch_process(): # Hacer algo asincrono proc = QtCore.QProcess() processes.add(proc) proc.start("/bin/sleep 3") # Cuando termine, llamar a finished proc.finished.connect(finished) def main(): app = QtCore.QCoreApplication([]) # Lanzar el proceso launch_process() app.exec_() main()
Al agregar un processes
global y meter ahí proc
, mantenemos siempre una referencia, y el programa funciona. Sin embargo, sigue teniendo un problema: nunca eliminamos los objetos QProcess
.
Si bien en este caso la pérdida de memoria es muy breve porque el programa termina enseguida, en un programa de verdad esto no es buena idea.
Así que necesitamos agregar una manera de sacar proc
de processes
cuando no lo necesitemo. Esto no es tan fácil como parece. Por ejemplo, esto no funciona bien:
def launch_process(): # Hacer algo asincrono proc = QtCore.QProcess() processes.add(proc) proc.start("/bin/sleep 3") # Sacamos el proceso del global cuando no lo necesitamos proc.finished.connect(lambda: processes.remove(proc)) # Cuando termine, llamar a finished proc.finished.connect(finished)
¡En esta versión, todavía tenemos un memory leak de proc
, aunque processes
esté vacío! Lo que pasa es que el lambda
contiene una referencia a proc
.
No tengo una my buena respuesta para este problema que no involucre convertir todo en miembros de un Qbject
y usar sender
para saber cuál proceso es el que termina, o usar QSignalMapper
. Esa versión la dejo como ejercicio para el lector ;-)
Después de mi post de ayer acerca de la letra de "Paisano de Hurlingham" recibí un aluvión de correcciones y explicaciones, que enumero a continuación.
Es una referencia a Opalinas Hurlingham, una fábrica abierta en 1948, y abandonada desde 1994. Hay una interesante colección de fotos de su interior en flickr
La empresa fué a la quiebra principalmente por un juicio pionero sobre daño ambiental: envenenaba las napas de la zona con arsénico.
Es el ramal Retiro/Pilar del ferrocarril San Martín, que efectivamente pasa por Hurlingham. Mea culpa.
Las abejas son trabajadoras. Ombú es la marca más conocida de ropa de trabajo en Argentina. Habla tal vez mal de mí que no se me ocurriera.
Mi mamá hacía explotar sapos forzándolos a fumar, cuando era chica. No he oído otra referencia a sapos explosivos.
Sigue siendo un misterio el porqué el sapo explota los domingos a las 10.
Jerga zonal acerca de ser un malandra.
Me acercan rock checo, aunque no eslovaco.
Desde ya muchas gracias por sus aportes!
Si tuviera 5 blogs y la energía para postear en todos, el cuarto sería "analizando demasiado la letra de canciones". En homenaje a ese blog que nunca va a existir, este sería el primer post: Paisano de Hurlingham, de Divididos (probablemente mi banda favorita).
Primero, la letra completa:
Al parecer hay un cierto consenso (entre las tres personas a quienes les pregunté), de que esta canción es la descripción de un viaje en tren.
Las letras de Divididos no se caracterizan por ser interpretables linealmente, De hecho, sospecho que la mayoría son simplemente una serie de palabras una después de la otra porque "suenan bien juntas".
El primer verso "Paisano de Hurlingham" es el título mismo de la canción, y, supongo, el protagonista de esta mínima odisea suburbana. "poda neblina" es interesante. No encuentro (gracias google) ninguna referencia a esa frase fuera de esta canción. Es posible que nadie jamás haya dicho "poda neblina" hasta que Mollo cantó esa estrofa.
Para que se hagan una idea de lo raro que es eso, hay dos referencias independientes a "navaja desierta", que son dos palabras al azar sacadas del diccionario. ¿Entonces, qué es "poda neblina"? Bueno, si es muy temprano, hay neblina, y el paisano la atraviesa, la corta, la poda. Así que, tirando de los pelos (que lo vamos a hacer bastante), podemos suponer que nos ubica temporalmente en una madrugada neblinosa.
Más obvio es "moneda o botón". Habla de hacer trampa, de pasar un botón donde debería haber una moneda. No se puede hacer eso con el cajero, ni con un vendedor, pero sí se puede en la limosna del "ciego bilingüe".
"paso morales" es obvia. Es la calle Paso Morales, en Villa Tesei. De hecho esa calle corta la vía del tren que viene de Chacarita, lo que confirma que hablamos de un viaje por las vías.
Es difícil justificar "sin la opalina". De hecho, no lo voy a intentar. "de Retiro a Pilar / busca el chancho al chabón" es tal vez la línea más obvia: es un guarda de tren que busca a un pasajero que no paga, y lo persigue desde Retiro a Pilar. El problema con esa obviedad es que:
El tren que hace Retiro/Pilar no pasa por Hurlingham
El tren que corta Paso Morales sale de Chacarita (y sí pasa por Hurlingham).
¿Es tal vez que "De Chacarita a Hurlingham" es imposible desde un punto de vista de métrica? Sería comprensible si así fuera.
"Sapo explota en San Martín / los domingos a las diez" es oscura. Además de que ninguna de las líneas de ferrocarril mencionadas pasa por San Martín. ¡Pero el recorrido Retiro/Pilar es de la línea San Martín! Si bien no logramos esclarecer qué sapo explota, porqué ni dónde, si bien sabemos cuando. Esto fortalece la hipótesis de que el paisano por algún motivo está yendo a Pilar.
También es sanmartiniana la referencia al "sable recto en la estación", por contraposición al famoso sable corvo del General. Que nunca jamás tuvo el grado de Mayor (ascendió de capitán a general), lo que complica encasillar "berretín de mayor".
"Canilla en el andén / gotea noticias / te grita el titular / mentiras sin picar" es directa. Un canillita, un canilla, es un vendedor de diarios. Las canillas gotean, los canillitas gotean noticias. Gritan los titulares (aunque creo que ningún canillita grita los títulos desde 1947 o algo así). Mentiras sin picar, porque el papel no está picado, todavía, porque es un diario de hoy.
Y llegamos a la estrofa final, "Abejas con ombu / viajando en el panal / va la timba en el furgón." Me resisto a dar una interpretación, mas allá de que las abejas en el panal van apretadas, y que ombú es una marca de papel para armar cigarrillos, que seguramente la gente de la banda ha usado en abundancia para drogarse, lo que seguramente es un ingrediente importante en la escritura de sus letras.
¿Qué conclusión podemos sacar de este análisis? Bueno, yo, personalmente, preferiría no entender lo que dicen, que Divididos fuera una banda de rock eslovaco, y poder sentir la patada en la frente que es esta canción sin tratar de entender qué carajo es "sapo explota en san martín". Pero eso es un problema mío.