如何在Python脚本中设置时间延迟?
当前回答
这是一个简单的时间延迟示例:
import time
def delay(period='5'):
# If the user enters nothing, it'll wait 5 seconds
try:
# If the user not enters a int, I'll just return ''
time.sleep(period)
except:
return ''
另一个,在Tkinter:
import tkinter
def tick():
pass
root = Tk()
delay = 100 # Time in milliseconds
root.after(delay, tick)
root.mainloop()
其他回答
使用时间模块中的sleep()。对于亚秒分辨率,它可以使用浮点参数。
from time import sleep
sleep(0.1) # Time in seconds
您也可以尝试以下操作:
import time
# The time now
start = time.time()
while time.time() - start < 10: # Run 1- seconds
pass
# Do the job
现在,炮弹不会坠毁,也不会反应。
异步休眠
请注意,在最近的Python版本(Python 3.4或更高版本)中,您可以使用asyncio.sleep。它与异步编程和asyncio有关。查看下一个示例:
import asyncio
from datetime import datetime
@asyncio.coroutine
def countdown(iteration_name, countdown_sec):
"""
Just count for some countdown_sec seconds and do nothing else
"""
while countdown_sec > 0:
print(f'{iteration_name} iterates: {countdown_sec} seconds')
yield from asyncio.sleep(1)
countdown_sec -= 1
loop = asyncio.get_event_loop()
tasks = [asyncio.ensure_future(countdown('First Count', 2)),
asyncio.ensure_future(countdown('Second Count', 3))]
start_time = datetime.utcnow()
# Run both methods. How much time will both run...?
loop.run_until_complete(asyncio.wait(tasks))
loop.close()
print(f'total running time: {datetime.utcnow() - start_time}')
我们可能认为,第一种方法会“休眠”2秒,第二种方法会休眠3秒,这段代码总共运行5秒。但它将打印:
total_running_time: 0:00:03.01286
建议阅读asyncio官方文档以了解更多详细信息。
延迟是通过时间库完成的,特别是time.sleep()函数。
让它等待一秒钟:
from time import sleep
sleep(1)
这之所以有效,是因为通过执行以下操作:
from time import sleep
你只从时间库中提取睡眠函数,这意味着你只需要调用它:
sleep(seconds)
而不是必须键入
time.sleep()
打字的时间太长了。
使用此方法,您将无法访问时间库的其他功能,也无法使用名为sleep的变量。但您可以创建一个名为time的变量。
如果您只需要模块的某些部分,那么从[library]导入[function](,[function2])非常有用。
你也可以这样做:
import time
time.sleep(1)
只要输入time,就可以访问时间库的其他功能,如time.clock()。[function](),但无法创建变量time,因为它会覆盖导入。要做的解决方案
import time as t
这将允许您将时间库引用为t,允许您执行以下操作:
t.sleep()
这适用于任何库。
这将延迟2.5秒:
import time
time.sleep(2.5)
下面是另一个例子,其中某个东西大约每分钟运行一次:
import time
while True:
print("This prints once a minute.")
time.sleep(60) # Delay for 1 minute (60 seconds).
推荐文章
- 证书验证失败:无法获得本地颁发者证书
- 当使用pip3安装包时,“Python中的ssl模块不可用”
- 无法切换Python与pyenv
- Python if not == vs if !=
- 如何从scikit-learn决策树中提取决策规则?
- 为什么在Mac OS X v10.9 (Mavericks)的终端中apt-get功能不起作用?
- 将旋转的xtick标签与各自的xtick对齐
- 为什么元组可以包含可变项?
- JavaScript中有睡眠/暂停/等待功能吗?
- 如何合并字典的字典?
- 如何创建类属性?
- 不区分大小写的“in”
- 在Python中获取迭代器中的元素个数
- 解析日期字符串并更改格式
- 使用try和。Python中的if