gpt4 book ai didi

python - 告诉妻子在开始下一个任务之前等待任务完成

转载 作者:太空宇宙 更新时间:2023-11-04 02:37:04 30 4
gpt4 key购买 nike

我在 waf 中有两个任务它们需要以正确的顺序执行,第二个任务必须等到第一个任务完成。

为了表明它的行为符合我的预期,我在任务中等待,第一个任务 ( t_1) 4 秒,第二个任务 (t_2) 1 秒。第二个任务先完成。这可以看出,因为我在等待后创建的文件夹具有时间戳 t_2 < t_1 .

在一个问题中:我怎么能告诉waf,那个t_2t_1 之后执行成功完成了吗?


  1. MWE:wscript

    from waflib import Context, Options
    from waflib import Task, TaskGen
    from waflib.Tools.compiler_c import c_compiler

    def options(opt):
    opt.load('compiler_c')

    def configure(cnf):
    cnf.load('compiler_c')

    def build(bld):
    bld.program(features=['t_1', 't_2'], source='main.c', target='abc')

    class t_1(Task.Task):
    always_run = True
    run_str = 'echo start t_1 && python -c "import time; time.sleep(4)" && echo end t_1 && mkdir t_1'
    color = 'RED'


    @TaskGen.feature('t_1')
    @TaskGen.after('apply_link')
    @TaskGen.before('t_2')
    def add_t_1_task(self):
    self.create_task('t_1')


    class t_2(Task.Task):
    always_run = True
    run_str = 'echo start t_2 && python -c "import time; time.sleep(1)" && echo end t_2 && mkdir t_2'
    color = 'RED'


    @TaskGen.feature('t_2')
    @TaskGen.after('apply_link', 't_1')
    def add_t_2_task(self):
    self.create_task('t_2')

最佳答案

您必须在任务的after 属性中指定必须在之前(在该示例中为t_1)运行的任务,该任务应该“等待”等待其他任务完成(在该示例中 (t_2)。它是这样指定的:after = ['t_1']

相关文档可在此处的 build order constraints 部分找到在waf book .

解释 generic task generator is §9.3 的文档在当前的waf书(waf 2.0)中,特别是§9.3.4解释了任务生成器的执行顺序。


完整的 MWE 示例如下所示:

from waflib import Context, Options
from waflib import Task, TaskGen
from waflib.Tools.compiler_c import c_compiler

def options(opt):
opt.load('compiler_c')

def configure(cnf):
cnf.load('compiler_c')

def build(bld):
bld.program(features=['t_1', 't_2'], source='main.c', target='abc')

class t_1(Task.Task):
always_run = True
run_str = 'date && echo 1 && echo start t_1 && python -c "import time; time.sleep(4)" && echo end t_1 && mkdir t_1 && date && echo 1'
color = 'RED'


@TaskGen.feature('t_1')
@TaskGen.after('apply_link')
@TaskGen.before('t_2')
def add_t_1_task(self):
self.create_task('t_1')


class t_2(Task.Task):
always_run = True
after = ['t_1'] # <---------------------------- **The problems solution**
run_str = 'date && echo 1 && echo start t_2 && python -c "import time; time.sleep(1)" && echo end t_2 && mkdir t_2 && date && echo 2'
color = 'RED'


@TaskGen.feature('t_2')
@TaskGen.after('apply_link', 't_1')
def add_t_2_task(self):
self.create_task('t_2')

关于python - 告诉妻子在开始下一个任务之前等待任务完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47633169/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com