He estado jugando con esto últimamente. Mis requisitos incluyen Python 3.x, que inmediatamente saca de la mesa soluciones como Jython e IronPython. De todos modos, dudaría en tomar esa ruta, ya que nunca he confiado en las máquinas virtuales de lenguaje en modo usuario.
En este caso, para mi propósito, la mejor solución hasta ahora es sacarlo por completo del intérprete y ejecutarlo en un contenedor fuertemente bloqueado (OpenVZ o similar). Sin embargo, esto está tomando un martillo en el problema (aunque no es el mazo de la virtualización completa), y puede no ser viable si tiene que ejecutar un número realmente grande de intérpretes aislados.
Sin embargo, una ventaja es que, como no depende de la seguridad de ningún intérprete en particular, puede usar cualquier lenguaje arbitrario que desee en el entorno; no tiene que vincularse con Python o el conjunto de idiomas/implementaciones disponibles para JVM o .NET/Mono.
Lo siento Alex, acabamos de tener una condición de carrera. Edité la pregunta para hacer que utilizara la terminología de Python (restringida) para lo que el OP estaba pidiendo (seguro). – ddaa
@ddaa, no creo que OP quiera específicamente rexec, solo una máquina virtual de Python "segura y aislada" ("sandbox" es el término que se usa con más frecuencia en dichos contextos). –