首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么time.sleep完全停止执行?

为什么time.sleep完全停止执行?
EN

Stack Overflow用户
提问于 2015-03-31 21:40:06
回答 1查看 497关注 0票数 0

下面的函数用于运行循环20分钟,如果可用的话处理SQL任务。为了避免在没有任何需要处理的情况下调用过多的SQL,它打算在再次处理任务之前休眠5秒:

代码语言:javascript
复制
def main():
    sql = 'some sql task here;'
    stop_time = datetime.today() + timedelta(minutes = 20)
    print('Started at ', datetime.now())
    print('Should stop at', stop_time)
    load_more_rows = True
    with ConnectionParameters.get_conn() as conn:
        while load_more_rows or (datetime.now() < stop_time):
            try:
                res = get_num_processed_batches(conn, sql)
                processed_batch = res > 0
            except Exception as ex:
                log_error(repr(ex))
                processed_batch = False
            if not processed_batch:
                print('Sleeping at ', datetime.now())
                time.sleep(seconds=5)
            load_more_rows = processed_batch
            print('Finished iteration at ', datetime.now())
    print('Stopped at ', datetime.now())

不幸的是,它不是睡觉、醒来和继续处理任务直到时间结束,而是完全停止执行,如输出所示:

代码语言:javascript
复制
('Started at ', datetime.datetime(2015, 3, 31, 17, 31, 6, 206652))
('Should stop at', datetime.datetime(2015, 3, 31, 17, 51, 6, 206630))
('Finished iteration at ', datetime.datetime(2015, 3, 31, 17, 31, 6, 356698))
('Finished iteration at ', datetime.datetime(2015, 3, 31, 17, 31, 6, 614349))
('Finished iteration at ', datetime.datetime(2015, 3, 31, 17, 31, 6, 638210))
('Finished iteration at ', datetime.datetime(2015, 3, 31, 17, 31, 6, 765645))
('Finished iteration at ', datetime.datetime(2015, 3, 31, 17, 31, 6, 885282))
('Finished iteration at ', datetime.datetime(2015, 3, 31, 17, 31, 7, 12109))
('Sleeping at ', datetime.datetime(2015, 3, 31, 17, 31, 7, 13803))

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-31 21:43:58

time.sleep不使用关键字参数seconds

代码语言:javascript
复制
time.sleep(5)

我不知道为什么它不会引起一个错误,因为缺少一个必要的参数。

https://docs.python.org/2/library/time.html#time.sleep

代码语言:javascript
复制
>>> time.sleep(seconds=1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: sleep() takes no keyword arguments
>>> time.sleep(1)
>>> "everything is fine"
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29379072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档