计时器 *args, **kwargs in while 在第一次迭代后变为空
Timer *args, **kwargs in while gets null after first iteration
我做了一个不起作用的重复计时器,第一次迭代起作用了,但后来它说 args 和 kwargs 是 NoneType,即使它第一次起作用了:
'NoneType' object is not callable
timer.py:
from threading import Timer
class repeat_timer(Timer):
def run(self):
while not self.finished.wait(self.interval):
try:
self.function(*self.args, **self.kwargs)
except Exception as e:
print("______EXCEPTION IN TIMER_______")
print(e)
我是这样称呼它的:
from timer import repeat_timer
timer = repeat_timer(delay, process_multiple_files(filter_json_path))
timer.run()
delay
只是一个整数,每个 运行 之间有秒数。
process_multiple_files(filter_json_path)
是检查文件并上传到数据库的函数。 filter_json_path
是一个带有 json 文件路径的字符串
我不知道从哪里开始,因为它第一次运行完美,但第二次运行不正常?
为了阐明计时器的工作原理,它会在 delay
的每 X 秒内尝试 运行 代码
问题是当 self.function(*self.args, **self.kwargs)
是 运行 并在第二次触发时给出异常 'NoneType' object is not callable
,所以第一个 运行 一切都很好,但在那之后它 运行s 但如上所述出现异常。
你需要这样称呼它:
from timer import repeat_timer
timer = repeat_timer(delay, process_multiple_files, filter_json_path)
timer.run()
process_multiple_files
是您希望定时器调用的函数,filter_json_path
是调用时应传递的参数
见https://docs.python.org/3/library/threading.html#timer-objects
class threading.Timer(interval, function, args=None, kwargs=None)
Create a timer that will run function with arguments args and keyword arguments kwargs, after interval seconds have passed. If args is None
(the default) then an empty list will be used. If kwargs is None
(the default) then an empty dict will be used.
我做了一个不起作用的重复计时器,第一次迭代起作用了,但后来它说 args 和 kwargs 是 NoneType,即使它第一次起作用了:
'NoneType' object is not callable
timer.py:
from threading import Timer
class repeat_timer(Timer):
def run(self):
while not self.finished.wait(self.interval):
try:
self.function(*self.args, **self.kwargs)
except Exception as e:
print("______EXCEPTION IN TIMER_______")
print(e)
我是这样称呼它的:
from timer import repeat_timer
timer = repeat_timer(delay, process_multiple_files(filter_json_path))
timer.run()
delay
只是一个整数,每个 运行 之间有秒数。
process_multiple_files(filter_json_path)
是检查文件并上传到数据库的函数。 filter_json_path
是一个带有 json 文件路径的字符串
我不知道从哪里开始,因为它第一次运行完美,但第二次运行不正常?
为了阐明计时器的工作原理,它会在 delay
的每 X 秒内尝试 运行 代码
问题是当 self.function(*self.args, **self.kwargs)
是 运行 并在第二次触发时给出异常 'NoneType' object is not callable
,所以第一个 运行 一切都很好,但在那之后它 运行s 但如上所述出现异常。
你需要这样称呼它:
from timer import repeat_timer
timer = repeat_timer(delay, process_multiple_files, filter_json_path)
timer.run()
process_multiple_files
是您希望定时器调用的函数,filter_json_path
是调用时应传递的参数
见https://docs.python.org/3/library/threading.html#timer-objects
class threading.Timer(interval, function, args=None, kwargs=None)
Create a timer that will run function with arguments args and keyword arguments kwargs, after interval seconds have passed. If args isNone
(the default) then an empty list will be used. If kwargs isNone
(the default) then an empty dict will be used.