同一个python解释器实例同时运行多个脚本?

时间:2011-04-16 23:22:02

标签: python

6到7年前,我看到了一种通过仅运行解释器一次在紧密资源环境中运行python的方法,同时允许多个脚本同时使用它。

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

是否存在相似之处?

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

想法?

2 个答案:

答案 0 :(得分:9)

是和否。 Python本身使用全局解释器锁(GIL),如果你愿意,你可以阅读很多。然而,简而言之,它确保解释器基本上是单线程的。您可以在Python程序中创建(并运行)多个线程,但是当他们/如果他们使用Python解释器时,一次只能有一个这样做。但是,如果您的线程主要运行来自SciPy或NumPy(这是未解释的本机代码)的代码,那么您可以同时运行多个代码。

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

答案 1 :(得分:3)

Python支持通过threadthreading模块进行线程处理(一个是低级别,另一个是高级别)。