for循环中的python调度程序
我一直在尝试使用pythonfor循环中的python调度程序,python,loops,scheduler,Python,Loops,Scheduler,我一直在尝试使用pythonschedule模块,通过循环文件中的行,例如每隔10秒将输入文件中的下一行数据发送到数据库中,来错开对数据库的数据摄取。我还没能实现它,所以我试着让这个原理在一个更简单的问题上起作用。我无论如何都不是一个有经验的程序员 如果我运行下面的代码并注释掉t1,我将通过两个函数传递一个数字列表,代码将生成列表中每个值乘以2的预期结果 import schedule import time def the_calc(i): j = i * 2 print(
schedule
模块,通过循环文件中的行,例如每隔10秒将输入文件中的下一行数据发送到数据库中,来错开对数据库的数据摄取。我还没能实现它,所以我试着让这个原理在一个更简单的问题上起作用。我无论如何都不是一个有经验的程序员
如果我运行下面的代码并注释掉t1
,我将通过两个函数传递一个数字列表,代码将生成列表中每个值乘以2的预期结果
import schedule
import time
def the_calc(i):
j = i * 2
print(j)
return j
def gen_newlist(list):
newer_list = []
print(list)
for i in list:
## t1
# res = schedule.every(10).seconds.do(the_calc, i)
# newer_list.append(res)
# while True:
# schedule.run_pending()
# time.sleep(1)
## t2
res = the_calc(i)
newer_list.append(res)
return newer_list
if __name__ == '__main__':
list = [2, 4, 6, 8, 10]
new_list = gen_newlist(list)
print(new_list)
如果我注释掉t2
并取消注释t1
处的代码,其中包括我认为对计划
模块正确的语法,我希望输入列表中的每个数字将再次乘以2,但间隔为10秒
事实上,列表每隔10秒处理一次,但似乎只有列表中的第一个值被反复拾取并传递给_calc函数,从而导致值被打印出控制台,并且在5次迭代后不会停止,这是列表的长度
这可能是我代码中的一个简单的遗漏或错误,我希望有人能给我指出正确的方向。请看这行:
schedule.every(10).seconds.do(the_calc, i)
现在让我们试着理解这条线在做什么
这一行告诉调度程序,用户希望每隔10秒调用一个值i
的函数the_calc
。因此,它每10秒做一次相同的事情,并且永远不会退出while
循环,这就是为什么它永远不会达到列表的第二个值
我不熟悉
计划
模块,因此我不知道如何使用此模块,但您可以使用time.sleep
来执行此操作。另外,如果不想阻止主线程,可以使用线程化。谢谢如果您有任何疑问,请发表评论。为什么您不在t2
部分使用time.sleep(10)
?我从未想到过。我刚刚将'time.sleep(10)'放在'res=the_calc(I)'上面,代码实现了我所希望的..没有调用调度模块。。谢谢,我现在看到了问题所在,我没有从循环中走出来。我必须想出办法,然后转到下一个I。上面评论中的选项以及您提到的使用time.sleep似乎确实有效,放在t2
部分,很高兴它有所帮助。我不确定是否使用时间。睡眠是最好的方法,但它会起作用。