2011-04-16 9 views
5

Hace 6-7 años vi una iniciativa de una forma de ejecutar python en entornos de recursos restringidos ejecutando el intérprete solo una vez, mientras permitía que varios scripts lo usaran al mismo tiempo.misma instancia del intérprete python que ejecuta varios scripts simultáneamente?

la idea fue bot, guardar la sobrecarga de inicio del intérprete y guardar la RAM.

¿Existe algo similar?

esta pregunta Python: Execute multiple Scripts simultaneously from same Interpreter no trata la concurrencia. al menos las respuestas fueron sobre ejecución secuencial, pero necesito simultáneamente :)

ideas?

Respuesta

9

Sí y no. Python utiliza un bloqueo de intérprete global (GIL), sobre el que puede leer mucho si lo desea. Sin embargo, para abreviar, asegura que el intérprete sea básicamente de un solo hilo. Puede crear (y ejecutar) más de un hilo en su programa de Python, pero cuando/si usan el intérprete de Python, solo uno puede hacerlo a la vez. Sin embargo, si tiene hilos que ejecutan principalmente código de algo como SciPy o NumPy (que es un código nativo que no se interpreta), puede ejecutar varios al mismo tiempo. La mayoría de los sistemas operativos tienen un mecanismo Copy On Write para las páginas de memoria de proceso, lo que significa que (siempre que el de su parte (o del intérprete) en absoluto. IOW, cuando ejecuta dos o más copias del intérprete, el segundo y posterior compartirá la mayor parte de la memoria (al menos para el código ejecutable) con la primera, de modo que el uso de recursos no aumentará (en ningún lugar cercano) linealmente a medida que ejecuta más instancias. El tiempo de inicio también se reducirá sustancialmente: el sistema operativo debe crear una nueva tabla de páginas que vincule las páginas de memoria con el nuevo proceso, pero no necesita volver a leer esas páginas del disco ni nada por el estilo.

+0

gracias. tendré que verificar eso, por supuesto :) –

3

Python admite el enhebrado a través de los módulos thread y threading (uno es de bajo nivel y el otro de alto nivel).

Cuestiones relacionadas