繁体   English   中英

python Global Interpreter Lock GIL问题

[英]python Global Interpreter Lock GIL problem

我想在网上提供一个人们可以测试算法性能的服务,这是用python编写并在linux机器上运行的

基本上我想做的是,有一个非常简单的PHP处理程序,比方说start_algo.php,它接受来自浏览器的请求,以及通过system()或popen()的php代码(类似于exec(“ python algo.py“))发出一个运行python脚本的新进程,我认为这部分是可行的

问题是因为它是一个Web服务,当然它必须同时为多个用户服务,但我对全球解释器锁GIL http://wiki.python.org/moin/GlobalInterpreterLock的'标准感到困惑'CPython已实现,是否意味着,如果我有3个用户现在运行算法(这意味着3个独立的进程,如果我错了,请纠正我),在特定时刻,只有一个用户正在运行Python口译员和其他2人正在等待轮到他们?

提前谢谢了

摊晒

如果要通过调用新进程打开每个脚本; 你不会与GIL发生冲突。 每个进程都有自己的解释器,因此也有自己的解释器锁。

GIL是按进程进行的。 如果你启动多个python进程,每个进程都有自己的GIL,可以防止这个特定进程中的解释器一次运行多个线程。 但独立进程可以同时运行。

此外,一个Python进程中的多个线程确实轮流运行(相当频繁地,IIRC每100个操作码指令一次或几十毫秒,具体取决于版本),因此它不像GIL完全阻止并发 - 它只是防止多个 -穿线。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM