2011-04-16 114 views
5

6-7年前,我看到了一种在严格资源env上运行python的方法,只运行一次解释器,同时允许几个脚本同时使用它。相同的python解释器实例同时运行多个脚本?

这个想法是bot保存解释器启动开销并节省RAM。

有类似的东西存在吗?

这个问题 Python: Execute multiple Scripts simultaneously from same Interpreter 没有解决并发问题。至少答案是关于顺序运行,但我需要同时:)

想法?

回答

9

是和否。 Python本身使用全局解释器锁(GIL),如果你关心,你可以阅读很多关于它的内容。然而,长话短说,它确保解释器基本上是单线程的。您可以在您的Python程序中创建(并运行)多个线程,但是如果他们使用Python解释器,则一次只能有一个线程。但是,如果你有线程主要运行SciPy或NumPy(这是本机代码不能被解释)的代码,那么你可以同时运行几个代码。

但是,大多数操作系统都有用于进程内存页的Copy On Write机制,这意味着(只要代码未被修改)解释器使用的大部分代码将被共享,而无需任何额外的工作在你的部分(或口译员)。 IOW,当你运行两个或两个以上的解释器副本时,第二个和后续将共享大部分内存(至少对于可执行代码),所以当你运行更多资源时,资源使用率不会上升(任何接近)实例。启动时间也将大幅减少 - 操作系统必须创建一个将内存页面映射到新进程的新页面表,但不需要从磁盘或其他类似的页面重新读取这些页面。

+0

谢谢。我将不得不验证那当然:) – 2011-05-09 07:50:31