python - 在python中x秒后运行一个函数
问题描述
我正在尝试安排运行非常 x 秒。我对简单的逻辑感到困惑。
import schedule
import time
names = ["1.jpg", "2.jpg", "3.jpg"]
i = 0
def printer():
for item in names:
print(names[i])
i = i+1
schedule.every(5).seconds.do(printer)
while 1:
schedule.run_pending()
time.sleep(1)
我试图让它做的是打印名称 1,然后 5 秒后打印名称 2,然后再 5 秒后打印名称 3。我等错误说:UnboundLocalError: local variable 'i' referenced before assignment
有什么想法吗?
解决方案
你的printer
功能坏了。如果您尝试让此功能打印 中的每个项目names
,请摆脱i
并执行以下操作:
names = ["1.jpg", "2.jpg", "3.jpg"]
def printer():
for item in names:
print(item)
如果您希望函数本身在每个项目之间有一个延迟,并且您只想运行一次,最简单的事情就是根本不打扰,只需在循环中schedule
添加一个:sleep
from time import sleep
names = ["1.jpg", "2.jpg", "3.jpg"]
def printer():
for item in names:
print(item)
sleep(5)
printer()
为了使它更简单,您还可以摆脱names
and printer
:
from time import sleep
for i in range(1, 4):
print(f"{i}.jpg")
sleep(5)
推荐阅读
- javascript - 如何在 NativesScrip Sidekick 中使用插件?
- javascript - 如何使用 CSS 或 JS 定位类的父级
- mysql - Mysql 内存使用量不断增长,直到 OOM 和系统终止/重新启动
- python-3.x - gmplot 标记在标记 256 点后不起作用
- python - “SQLTable”对象没有属性“insert_statement”
- python - 在另一个数据框行内的数据框行中查找单词
- python - 保存新用户时出现重复键错误
- ruby-on-rails - nil:NilClass 的未定义方法“total_pages”
- c# - 如何从现有的创建 IServiceCollection?
- python-3.x - 无法重命名包含数千个文件的目录