1 回答
TA贡献1906条经验 获得超10个赞
但代码的真正“核心”应该只在上午 9 点到下午 5 点之间执行。
然后测试那个,只有那个。将该测试放入一个在 9 到 17 之间才会返回的函数中:
def wait_for_working_hours():
now = dt.datetime.now()
if 9 <= now.hour < 17:
return
# not within working hours, sleep until next 9 o'clock
next9_day = now.date()
if now.hour >= 17:
# between 17:00 and 23:59:59.999999, next 9am is tomorrow
next9_day += dt.timedelta(days=1)
delta = dt.datetime.combine(next9_day, dt.time(9)) - now
time.sleep(delta.total_seconds())
此功能会一直阻塞到上午 9 点到下午 5 点之间。
其他要改变的事情:
不要使用
while flagvariable: ...
,你可以使用break
来结束一个while True:
循环。我会使用
sys.exit()
而不是raise SystemExit()
.而不是
if test: # do things
,else: exit
,将退出条件放在前面,提早。因此if not test: exit
,该# do things
部分也不再需要缩进。
连同wait_for_working_hours
看起来像这样的:
while True:
if not some_function():
sys.exit()
wait_for_working_hours()
# do things that need to be done during working hours
# ...
if some_condition:
break
# then sleep for a minute before doing it again.
time.sleep(60)
添加回答
举报