我在SO上的第一篇文章(兴奋)。我目前正在我(客户端)和一些远程机器(服务器)之间实现消息传递系统。现在这个服务器在周末进行维护。我有一个使用log_in
方法和log_out
方法的消息传递会话的课程。
class MessagingSession():
def log_in():
# some log in code
# ...
def log_out():
# some log out code
# ...
我的问题是如何编写一些在后台运行的函数/方法,定期检查时间以及何时注销调用log_out
函数以及何时登录调用{{1功能。
答案 0 :(得分:2)
您可以使用while循环从Thread
模块创建threading
并在其中睡眠以检查每n秒的时间,如果是(过去)所需的时间,则可以打电话给你的方法。
from threading import Thread
import time
def check_time(logout_time, sleep_milliseconds):
while time.time() < logout_time:
time.sleep(sleep_milliseconds)
logout()
Thread(target=check_time, daemon=True, args=(logout_time, 1000)).start()
这只是一些粗略的代码,你必须从你自己的代码填写一些空白并把它放在适当的位置,但你明白了。
答案 1 :(得分:0)
使用时间库:
import time
currTime = time.strftime("%H:%M:%S")
setTime = "00:00:00"
if currTime == setTime:
#logout
如果您想与主程序并排运行,请查找多线程。
答案 2 :(得分:0)
您可以使用作为python模块的线程。如果条件满足,您可以尝试创建一个每隔X秒循环检查的线程。
这里有一个可能有用的代码示例:
import threading
import time
def check_time():
interval = 40 # in seconds
while 1:
time.sleep(interval)
# Call your methods here
t1 = threading.Thread(target=check_time, name='Thread1')
t1.daemon = True
t1.start()
使用线程作为守护进程的好处是你可以在执行中忘记它。当您运行程序时,它将执行您的后台任务,而无需关闭或关注它。