
Digamos que la python
respuesta tarda mucho en iniciarse, ¿hay alguna manera de iniciarla en segundo plano para poder crear un alias y alimentarlo con comandos como python-current "command to run"
?
Respuesta1
No hay nada en la distribución de Python que implique realizar este tipo de apertura, a pesar de las "baterías incluidas".
Que programas como los editores puedan manejar ese tipo de cosas se debe a que está bastante claro qué hacer cuando abres otro archivo: simplemente abres una ventana/pestaña en el nuevo archivo, manejado por el mismo ejecutable.
Implementar algo así usted mismo no es tan difícil, pero debe pensar en lo que sucede cuando el primer comando aún no ha terminado y el segundo está programado:
- cancelar el primer comando
- poner en cola el segundo comando
- ejecutar cosas en paralelo (lo que requiere tiempo de inicio adicional a menos que tenga varios subprocesos esperando el comando)
He notificado a Python en ejecución para cargar y ejecutar módulos basados en archivos en un directorio que fueron escaneados, solicitud http (en un sistema basado en Twisted) y con zeromq. Lo que es apropiado depende, en mi humilde opinión, de qué más necesita el sistema; siempre elijo lo que funciona y tiene la menor sobrecarga. Tendrías python-current
que hacer la interfaz adecuada.
A menudo, esto se combinaba con la recarga de ciertos módulos (para procesar nuevos comandos). Para eso puedes usar el reload()
incorporado:
import mycommand
# test for a command that requires reloading
reload(mycommand)
Como comentario aparte: especialmente cuando uso el código de la interfaz de usuario, esta recarga me ha resultado útil. La carga del ejecutable en Python es comparable con Perl (0,002 s en mi sistema de varios años
time python -v
). Cargar los módulos base lleva aproximadamente diez veces más ( time python -c "exit();", 0.025s). But when using UI based programs the whole startup easily grows to several seconds and more. And in that case implementing dynamic command reading and having a
python-current` tiene sentido.
Respuesta2
Si lo usas, bash
puedes intentarlo.coprocesos. Ksh también tienecoprocesos, No estoy seguro de si ambos shells tienen una función equivalente en esta área. Solo probé la versión Ksh (a mi empleador le encanta klunk, así que usamos Ksh) y funcionó, pero no fue fácil tener más de un coproceso.
Busque en Google "ejemplo de coproceso ksh" o "ejemplo de coproceso bash" y encontrará un código de ejemplo. Trabaje a partir de los ejemplos, ya que todo no es muy intuitivo.