首页 > 解决方案 > 在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有什么想法吗?

标签: python

解决方案


你的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()

为了使它更简单,您还可以摆脱namesand printer

from time import sleep

for i in range(1, 4):
    print(f"{i}.jpg")
    sleep(5)

推荐阅读