Python GUI在eval期间挂起

时间:2011-07-29 08:11:59

标签: python tkinter

所以,我正在使用Tkinter在Python中构建一个GUI,在运行时,它将用于加载列出许多python脚本的文本文件。然后将执行脚本并返回一个数字,指示它们是否成功(将不会使用sys.exit返回returncode,脚本文件将具有将被调用的函数并返回1或0)。在运行时,我使用exec将脚本文件作为模块导入,然后使用eval调用模块中的函数。

def runtest(test):
    exec 'import ' + test
    func=test+'.'+test+'()'
    return eval(func)

问题是,整个用户界面在评估期间挂起,但我宁愿让它在后台运行。如果有人知道实现这一目标的方法,将不胜感激。

1 个答案:

答案 0 :(得分:0)

可能有两种方式。

  1. 使用Python多处理库http://docs.python.org/library/multiprocessing.html

  2. Python线程。

  3. 由于Python的GIL,选项1与选项2相比是好的。

    来自多处理导入过程

    def runtest(test):
       exec 'import ' + test
       func=test+'.'+test+'()'
       return eval(func)
    
    if __name__ == '__main__':
    p = Process(target=runtest, args=('mytest',))
    p.start()
    p.join()