Python重用模块而没有新的负载

时间:2018-03-10 15:26:40

标签: python matlab

我有两个模块,我需要从另一个模块导入。在第一个模块中,我只需要声明变量和加载(如果未加载)。第二,只需读取此变量并使用它(如果未加载,则在另一个模块中加载它)

第一个模块:

run_engine.py:

#run_engine.py
import matlab

eng = None

if(eng == None):
    eng = matlab.engine.start_matlab()

start.py:

#!/usr/bin/python
import matlab.engine
import os
import run_engine

def app():
    currentDir = os.path.dirname(os.path.abspath(__file__))

    matlabInstance = run_engine.eng

    matlabInstance.addpath(currentDir)

    matlabInstance.sim('thermo_simple')

if __name__ == '__main__':
   app()

matlab.engine.start_matlab需要大约30秒才能启动,而且我正在重复使用start.py,所以我只需要一个eng实例,但是加载正确。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:0)

在交互式python shell中重复运行app()

$ python -i start.py
>>> app()

答案 1 :(得分:0)

#run_engine.py
import matlab
import time

eng = None

while not eng:
    eng = matlab.engine.start_matlab()
    time.sleep(1)

顺便说一句 - 如果你想使用"如果X ==无" - 这应该作为

if X is None

这是一个优选的Python习语;)