Python,while循环,每小时开始时调用方法
好的,我有一个IRC机器人,这是我在学习Python时的一个持续项目,感谢这里的每一个人,当我遇到困难时,你们都给予了我帮助。
我有一个循环,我想找个办法来检查是否新的一小时已经开始,如果是的话,就运行一个方法来更新设置,并确保它仍然连接着频道。我就是不知道该怎么检查时间,然后调用这个方法。
在这个循环里还有很多其他事情在发生,所以让它每小时睡一次并不是最好的办法。
我知道没有代码的问题会被降分,所以这里有一些代码。
while 1:
if(newhour() == 1):
run_Method()
2 个回答
1
不要使用无限循环的 while 循环,这样会浪费一个处理器核心,只是为了运行一个无聊的循环。如果你真的要用它来做一些简单的测试,至少在循环里面加个 sleep(),让它休息一下。
系统已经有一个定时任务服务(Cron)在运行,可以用来处理这个任务。把你的脚本放到那里(或者创建一个脚本来调用你的主脚本)。
$ cd /etc/cron.hourly/
假设 proj_x.sh 是用来调用你的主脚本的。你可以创建 proj_x.sh:
$ vi proj_x.sh
把下面的代码放进 proj_x.sh 里:
#!/usr/bin/env python
/home/user/path_to_proj_x/cron_hourly.py
让它可以执行:
$ chmod +744 proj_x.sh
现在,/home/user/path_to_proj_x/cron_hourly.py 是你的主脚本,里面包含了你的 run_method()
方法。
2
为了回答你的问题,你可以这样做:
current_hour = datetime.now().hour
while 1:
if(datetime.now().hour != current_hour):
run_Method()
current_hour = datetime.now().hour
警告:这个方法非常简单。