GIL(Global Interpreter Lock):全局解释器锁,python解释器在执行python字节码的时候会锁住解释器,导致其它的线程不能使用解释器,从而多线程情况下CPU上不去。
关于GIL更详细的解释可以看这篇文章http://www.dabeaz.com/python/UnderstandingGIL.pdf,可能需要翻墙
python中由于有GIL的存在,CPU密集型的程序不能达到良好的效果,但是最近学习lua的时候,想到如果python执行的不是python字节码是不是可以突破GIL的限制,实验一番以后果然有惊喜。
import lupa
lua_code = '''
function(idx, N)
for i = 1, N do
if i % 10000000 == 0 then
print(idx, i)
end
end
end
'''
old = time.time()
lua_funcs = [lupa.LuaRuntime().eval(lua_code) for _ in range(3)]
def wra