python中调用lua——(lupa)

我个人对于python比较熟悉,最近在学习lua,自觉不自觉的就想把两者结合在一起,从网上搜索了一批相关技术之后,发现lupa这个python库。

安装过程参照网上的各种教程。


简单实验了一下,发现可行:



相应的python代码:


#python lupa load

import lupa
lua = lupa.LuaRuntime()

LIBS = [
    "./scripts/foo.lua",
]
llibs = {}

def get_file_name(filename):
    import os
    (_, tmp) = os.path.split(filename)
    (f_name, ext) = os.path.splittext(tmp)
    return f_name
    
def load_libs():
    global LIBS, llibs
    for lib_p in LIBS:
        f = open(lib_p, 'r')
        code_str = f.readlines()
        filename = get_file_name(lib_p)
        llibs[filename] = lua.execute('\n'.join(code_str))
        
if __name__ == '__main__':
    load_libs()
    print llibs['foo'].sayhi()
    print llibs['foo'].callback(100, 200, 300, 400)
        --foo.lua

libfoo = {}

function libfoo.sayhi()
    return "hi from lupa"
end

function libfoo.callback(a, b, c, d)
    return a * b + c - d
end

return libfoo

这样做有几点好处:

1. python写框架,lua写回调,每次调用一遍load_libs就相当于一次热更新

2. lua代码本身特别简单,可以交给策划配置,与热更新结合效果更好

3. python多线程结合lua使用可以突破python GIL的限制,后面补充一个demo

你可能感兴趣的:(python,lua)