web-dev-qa-db-ja.com

スケジュールにパラメータを渡す

パラメータを schedule に渡すにはどうすればよいですか?

呼び出したい関数:

_def job(param1, param2):
    print(str(param1) + str(param2))
_

スケジュール方法:

_schedule.every(10).minutes.do(job)
_

パラメータをdo(job)に渡すにはどうすればよいですか?

11

一般に、この種のことであなたはいつでもこれをすることができます:

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!'))
13
Alex Hall