如何计算python程序启动后1小时的时间?
我想问:如何编写一个python程序来计算自从我们启动python程序以来已经过去了1个小时 我举一个例子: -我们在17:00:00开始了python程序 -运行1小时(18:00:00)后,python程序将打印一条消息,通知1小时已经过去 我能想出一个python程序。首先,我记录启动程序的时间(称为如何计算python程序启动后1小时的时间?,python,multithreading,Python,Multithreading,我想问:如何编写一个python程序来计算自从我们启动python程序以来已经过去了1个小时 我举一个例子: -我们在17:00:00开始了python程序 -运行1小时(18:00:00)后,python程序将打印一条消息,通知1小时已经过去 我能想出一个python程序。首先,我记录启动程序的时间(称为start\u time),然后连续记录下一次(称为end\u time)。如果(end\u time-start\u time==1小时),它将打印一条消息 然而,这个程序似乎浪费了太多的C
start\u time
),然后连续记录下一次(称为end\u time
)。如果(end\u time
-start\u time
==1小时),它将打印一条消息
然而,这个程序似乎浪费了太多的CPU性能!我需要一个程序,采取较少的CPU性能
编辑:
我需要如下
我有一个线程名等待事件\u线程
。这是一个阻塞线程。如果未设置事件触发器
,则此线程被阻止。
在阻塞时间内,如果已经过了1小时,该线程将打印一条消息。
这是我的期望
之前,我说过我会持续记录下一次(callend\u time
)。这意味着我打算从阻塞线程改为非阻塞线程,因为我不知道如果1小时过去了,如何在阻塞线程中打印消息。但非阻塞线程似乎占用了如此多的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()
感谢@Ilja Everilä的纠正和改进
感谢@Ilja Everilä的更正和改进您可以利用多线程,创建一个独立于代码其余部分运行的线程。该线程只需休眠1小时,然后打印“1h已通过”,然后再休眠1小时 要将其转换为代码形式,您需要以下内容: 在main()中添加如下内容:
import _thread
if __name__=="__main__":
#
# your init code here
#
try:
_thread.start_new_thread( print_message_every_interval, \
("Timer-1h", "One hour have passed", 3600 ) )
except Exception as e:
print('could not start new thread')
print(e)
#
# the rest of your code here
#
当然,您可以使用许多多线程库来使代码看起来更漂亮。类似于线程
模块
您可以在此处找到有关此主题的更多信息:
您可以利用多线程,创建一个独立于代码其余部分运行的线程。该线程只需休眠1小时,然后打印“1h已通过”,然后再休眠1小时 要将其转换为代码形式,您需要以下内容: 在main()中添加如下内容:
import _thread
if __name__=="__main__":
#
# your init code here
#
try:
_thread.start_new_thread( print_message_every_interval, \
("Timer-1h", "One hour have passed", 3600 ) )
except Exception as e:
print('could not start new thread')
print(e)
#
# the rest of your code here
#
当然,您可以使用许多多线程库来使代码看起来更漂亮。类似于线程
模块
您可以在此处找到有关此主题的更多信息:
我建议一小时后使用
`time.sleep(t)`
其中
t
尽可能高,而不影响您的程序。我建议您在一小时后使用
`time.sleep(t)`
其中,
t
在不影响程序的情况下尽可能高。启动一个线程,该线程将在每小时后调用一个函数并打印消息。
您可以使用主函数编写如下代码:
导入线程
def print():
print "One Hour has been passed"
t = threading.Timer(3600, print)
t.start()
这将在每小时后调用打印函数并打印消息。启动一个线程,该线程将在每小时后调用函数并打印消息。 您可以使用主函数编写如下代码: 导入线程
def print():
print "One Hour has been passed"
t = threading.Timer(3600, print)
t.start()
这将在每小时后调用打印功能并打印消息。因为您需要使用的超时参数,并检查是否在返回时设置了事件:
def wait_an_event_thread(trigger):
while not trigger.wait(3600):
print "1 hour has passed"
# Do what must be done when triggered
trigger = threading.Event()
the_thread = threading.Thread(name='wait_an_event_thread',
target=wait_an_event_thread,
args=(trigger,))
the_thread.start()
如果未设置事件,这将在小时(ish)间隔之间继续打印诊断消息
Event.wait()
因为您需要使用的超时参数,并检查是否在返回时设置了事件:
def wait_an_event_thread(trigger):
while not trigger.wait(3600):
print "1 hour has passed"
# Do what must be done when triggered
trigger = threading.Event()
the_thread = threading.Thread(name='wait_an_event_thread',
target=wait_an_event_thread,
args=(trigger,))
the_thread.start()
如果未设置事件,这将在小时(ish)间隔之间继续打印诊断消息
Event.wait()
您可以使用。你也应该包括一个你迄今为止尝试过的最简单的例子,这样其他人可以更好地帮助你。你能读一下吗?你有一个函数和一个变量同名,这会引起问题。另外,如果你需要她的帮助,你需要给她贴上“so@IljaEverilä”的标签,我恐怕不明白你所说的阻塞线程是什么意思。触发器是线程应该等待的事件、条件或其他同步对象(看起来是这样),但它应该在一个小时后恢复以通知它。那之后会发生什么?它应该继续等待吗?程序应该退出吗?例如,Event.wait()
接受一个作为浮点秒的超时,在该超时之后,即使没有设置标志,它也会继续。您是否正在寻找类似的东西,而不是触发器。wait(timeout=3600):
+循环内的打印(如果使用事件
)?换句话说:什么是触发器
?您可以使用。你也应该包括一个你迄今为止尝试过的最简单的例子,这样其他人可以更好地帮助你。你能读一下吗?你有一个函数和一个变量同名,这会引起问题。另外,如果你需要她的帮助,你需要给她贴上“so@IljaEverilä”的标签,我恐怕不明白你所说的阻塞线程是什么意思。触发器是线程应该等待的事件、条件或其他同步对象(看起来是这样),但它应该在一个小时后恢复以通知它。那之后会发生什么?它应该继续等待吗?程序应该退出吗?例如,Event.wait()
接受一个作为浮点秒的超时,在该超时之后,即使没有设置标志,它也会继续。您是否正在寻找类似的东西,而不是触发器。wait(timeout=3600):
+循环内的打印(如果使用事件
)?换句话说:什么是触发器
?用秒来比较小时数?不需要秒级分辨率!任何程序员都不会使用