仅在第一个脚本完成后才执行第二个python脚本

时间:2018-07-08 02:22:27

标签: python lua subprocess python-os

我通过lua脚本从浏览器执行python脚本:

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

,然后我再次执行此操作(例如,刷新页面,发送表格)

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

我希望仅在第一个脚本结束时才执行第二个脚本。 我希望将脚本添加到队列中,并从最早的脚本到最新的脚本执行。 我该怎么办?

1 个答案:

答案 0 :(得分:0)

这与我参与 Codea (iPad的Lua开发环境)中的Lua的讨论线程非常相似:请参阅here。在该页面上,遵循 se24vad 对线程队列的使用。请注意,该页面上的代码不一定可移植,因为Codea提供了一些Lua内置的功能。我指向此页面的是想法,而不是特定的代码。

基本上,您的想法是您需要在线程队列(例如Lua协程)中对函数进行排队。在他的特定实现中,直到完成最上面的协程(队列表中的索引1)后,您才继续执行新的协程。换句话说,协程调用正在阻塞。

您将要实现一个协程队列,每个os.execute调用都应作为一个单独的协程。

现在,我不确定它如何适合您的其余代码。我不知道您使用什么代码控制何时刷新页面。您将需要某种控制器代码来跟踪协程队列。

如果在您的用例中无法使用线程队列,则可能是python脚本需要以某种方式向浏览器报告完成情况。进行新的execute调用时,它将先检查完成变量,然后再继续。