只有在第一个脚本完成后才执行第二个 Python 脚本

我通过 Lua 脚本从浏览器执行 Python 脚本:

os.execute('python scriptname.py --arg1 Test --arg2 Test2')

然后我再次执行它(例如通过刷新页面,发送表单)

os.execute('python scriptname.py --arg1 Test3 --arg2 Test4')

我希望只有在第一个脚本完成到结束时才执行第二个脚本。 我希望将脚本添加到队列中,并从最旧的脚本到最新的脚本执行。 我该如何做到这一点?

点赞
用户4403144
用户4403144

这个问题和我在 Codea (iPad 上的 Lua 开发环境)的讨论串非常相似,请参见这里。在那个页面上,跟随 se24vad 对线程队列的使用。请注意,那个页面上的代码并不一定是可移植的,因为 Codea 提供了一些 Lua 中不内置的功能。我指向这个页面是为了获取想法,而不是特定的代码。

基本上,思路是你需要将函数排入线程队列(即 Lua 协程)。在他的特定实现中,你必须等待排在第一位(队列表中的索引 1)的协程完成后才能转到新的协程。换句话说,协程调用是阻塞的。

你需要实现一个协程队列,每个 os.execute 调用都是单独的协程。

现在,它如何适配到你的其他代码中,我不确定。我不知道你控制页面刷新发生的代码是什么。你需要一些控制器代码来跟踪协程队列。

如果在你的用例中无法使用线程队列,则可能需要这些 Python 脚本以某种方式向浏览器报告完成情况。当进行新的执行调用时,它首先检查完成变量,然后再进行。

2018-07-08 02:40:25