我想在列表上重复2分钟,然后每次将一个元素移到列表的更远处。我使用“时间表”执行任务。脚本如下:
if __name__ == '__main__':
machines_queue=[[...],[...],...] # list of the sublists
global counter
counter= 0
def job(sub_list):
somefunction(sub_list) # here I want each 2 min iteration a sublist from machine_queue further
counter= counter +1 # here is pop the Error on the counter
print("I'm working...")
schedule.every(1).minutes.do(job,sub_list= machines_queue[counter])
print(counter)
while True :
schedule.run_pending()`
第一次运行良好,他们在柜台上收到此错误消息:
“ UnboundLocalError:分配前已引用本地变量'counter'。”
我不明白,因为我将变量设置为全局变量,所以我没有遇到范围问题。
如果您有想法,请....::)预先感谢您的帮助
答案 0 :(得分:1)
您应在要允许访问该变量的函数内使用global
语句。将global counter
移动到job
函数的开头,它将起作用。
答案 1 :(得分:0)
我的工作解决方案是每分钟执行一次具有各种功能和条件的任务:只需像往常一样执行正常循环,然后在最后添加时间睡眠(例如:time.sleep(120)。函数/ main中的所有代码,如果仍然需要,可以在其上使用Schedule库...。