我想问:如何编写一个python程序来计算1个小时已经过去了,因为我们启动了一个python程序?在
我举个例子: -我们在17:00:00启动了python程序 -运行1小时后(18:00:00),python程序将打印一条消息,通知1小时已过。在
我能想出一个python程序。首先,我记录启动程序的时间(称为start_time
),然后连续记录下一个时间(称为end_time
)。如果(end_time
-start_time
==1小时),它将打印一条消息。在
但是这个程序似乎浪费了太多的CPU性能!我需要一个CPU性能更低的程序。在
编辑: 我需要如下。在
我有一个线程名wait_an_event_thread
。它是一条阻塞线。如果没有设置事件trigger
,则此线程被阻塞。
在阻塞时间内,如果已经过了1小时,这个线程将打印一条消息。
这是我的期望。在
之前,我说过我下一次连续录制(call end_time
)。这意味着我打算从阻塞线程更改为非阻塞线程,因为我不知道如何在阻塞线程中打印消息,如果一个小时过去了。但似乎非阻塞线程占用了太多的CPU性能。在
这是我的代码:
我的期望是:阻塞线程
def wait_an_event_thread(trigger):
trigger.wait()
# If 1 hour has been passed, it print a message
# How to print message if 1 hour has been passed in this blocking thread if the "trigger" event is not set??
trigger = threading.Event()
wait_an_event_thread = threading.Thread(name='wait_an_event_thread',
target=wait_an_event_thread,
args=(trigger,))
wait_an_event_thread.start()
您可以利用多线程并创建一个独立的线程,该线程独立于其余代码运行。又睡了一个小时,然后又睡了一个小时。在
要将其转换为代码形式,您将需要以下内容: 在
在main()中添加以下内容:
^{pr2}$当然,您可以使用许多多线程库使代码看起来更漂亮。就像
threading
模块。在您可以在此处找到有关此主题的更多信息: https://www.tutorialspoint.com/python3/python_multithreading.htm
More details in documentation
感谢@Ilja EveriläIlja Everilä的更正和改进
事实证明,您需要使用^{} 的timeout参数,并检查返回时是否设置了事件:
如果没有设置事件,这将在小时(ish)间隔之间继续打印诊断消息。
Event.wait()
might behave badly if your system clock jumps backwards。在相关问题 更多 >
编程相关推荐