我正在开发一个Linux多核机器,我只需要在命令行上使用解释器(实际上只是“python script.py”)多次同时调用相同的Python脚本。 我发现即使我在机器资源范围内,性能也比单个调用要慢得多。我相信这是因为实例通过Global Interpreter Lock(GIL)共享解释器 - 即几个实例最终运行“单核”,无论如何。 如果我使用冻结的Python二进制版本的脚本(http://wiki.python.org/moin/Freeze)做同样的事情,那会发生吗?我不相信,因为二进制文件“带有自己的解释器”?
答案 0 :(得分:3)
你的信念是对的。 GIL是流程全球性的。单独的CPython进程没有任何共享,甚至没有GIL。只有同一进程中的线程才能竞争相同的全局锁。您看到的性能下降有很多原因。是的,冻结的可执行文件IIUC的规则是相同的。