传递参数以进行计划

时间:2016-11-24 08:14:31

标签: python schedule

如何将参数传递给schedule

我想要调用的函数:

def job(param1, param2):
    print(str(param1) + str(param2))

我如何安排:

schedule.every(10).minutes.do(job)

如何将参数传递给do(job)

2 个答案:

答案 0 :(得分:7)

一般来说,你可以这样做:

schedule.every(10).minutes.do(lambda: job('Hello ', 'world!'))

查看来源:

def do(self, job_func, *args, **kwargs):
    """Specifies the job_func that should be called every time the
    job runs.
    Any additional arguments are passed on to job_func when
    the job runs.
    :param job_func: The function to be scheduled
    :return: The invoked job instance
    """
    self.job_func = functools.partial(job_func, *args, **kwargs)

我们看到你也可以这样做:

schedule.every(10).minutes.do(job, 'Hello ', 'world!')

或者,正如代码所示,通用lambda方法的替代方法是:

schedule.every(10).minutes.do(functools.partial(job, 'Hello ', 'world!'))

答案 1 :(得分:1)

schedule.every(10).minutes.do(job, 'do something', 'like this')

我的朋友尝试了上面的语法但没有用,所以如果它不起作用你可以使用

schedule.every(10).minutes.do(job('do something', 'like this'))

他的日程表不是这样的,完全是这样的-

schedule.every().monday.at('8:30')do(job('It was', 'like this'))