所以,我正在使用Tkinter在Python中构建一个GUI,在运行时,它将用于加载列出许多python脚本的文本文件。然后将执行脚本并返回一个数字,指示它们是否成功(将不会使用sys.exit返回returncode,脚本文件将具有将被调用的函数并返回1或0)。在运行时,我使用exec将脚本文件作为模块导入,然后使用eval调用模块中的函数。
def runtest(test):
exec 'import ' + test
func=test+'.'+test+'()'
return eval(func)
问题是,整个用户界面在评估期间挂起,但我宁愿让它在后台运行。如果有人知道实现这一目标的方法,将不胜感激。
答案 0 :(得分:0)
可能有两种方式。
使用Python多处理库http://docs.python.org/library/multiprocessing.html
Python线程。
由于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()