6-7年前,我看到了一种在资源紧张的环境下运行python的方法,只运行一次解释器,同时允许几个脚本同时使用它。
这个想法是为了节省解释器的启动开销和节省内存。
有相似的东西存在吗?
这个问题Python: Execute multiple Scripts simultaneously from same Interpreter没有解决并发性问题。至少答案是关于顺序运行的,但我需要同时:)
想法?
发布于 2011-04-17 07:30:31
是也不是。Python本身使用了全局解释器锁(GIL),如果你愿意的话,你可以阅读很多关于它的内容。然而,长话短说,它确保解释器基本上是单线程的。您可以在Python程序中创建(和运行)多个线程,但是当/如果它们使用Python解释器时,一次只能有一个线程这样做。但是,如果您的线程主要运行来自SciPy或NumPy (这是不需要解释的原生代码)之类的代码,那么您可以同时运行多个代码。
然而,大多数操作系统都有一个用于进程内存页的写入时复制机制,这意味着(只要代码没有被修改)解释器使用的大部分代码将被共享,而您(或解释器)根本不需要任何额外的工作。换句话说,当你运行两个或更多的解释器副本时,第二个和后续的解释器将与第一个共享大部分内存(至少对于可执行代码而言),因此资源使用量不会随着您运行更多的实例而线性增加(接近)。启动时间也将大大减少--操作系统必须创建一个新的页表,将内存页面映射到新的进程,但不需要从磁盘或类似的东西中重新读取这些页面。
发布于 2011-04-17 07:27:02
Python通过thread和threading模块支持线程(一个是低级模块,另一个是高级模块)。
https://stackoverflow.com/questions/5690327
复制相似问题