Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python每五分钟重复一次算法_Python_Loops_Time - Fatal编程技术网

Python每五分钟重复一次算法

Python每五分钟重复一次算法,python,loops,time,Python,Loops,Time,我需要编写一个Python代码,以便准确地每隔五分钟重复一次交易算法。我尝试过的所有解决方案,例如Sleep()都将计算机器时间,这不是我想要的 我需要在调用之间保留状态。。。我希望算法每5分钟运行一次(例如14:00;14:05;14:10;14:15……)。该算法(检索数据并计算数字)本身大约需要12秒才能执行。如果计算机挂起,我将跳过迭代 编辑 根据您的评论:“我希望算法每5分钟运行一次(例如14:00;14:05;14:10;14:15……)” 使用和无限循环: import time

我需要编写一个Python代码,以便准确地每隔五分钟重复一次交易算法。我尝试过的所有解决方案,例如Sleep()都将计算机器时间,这不是我想要的

我需要在调用之间保留状态。。。我希望算法每5分钟运行一次(例如14:00;14:05;14:10;14:15……)。该算法(检索数据并计算数字)本身大约需要12秒才能执行。如果计算机挂起,我将跳过迭代

编辑

根据您的评论:“我希望算法每5分钟运行一次(例如14:00;14:05;14:10;14:15……)”

使用和无限循环:

import time
import datetime

while True:
    if datetime.datetime.now().minute % 5 == 0: 
        #do algorithm
    time.sleep(60)
编辑

根据您的评论:“我希望算法每5分钟运行一次(例如14:00;14:05;14:10;14:15……)”

使用和无限循环:

import time
import datetime

while True:
    if datetime.datetime.now().minute % 5 == 0: 
        #do algorithm
    time.sleep(60)

如果您在linux环境中工作,则可以使用cron作业来实现这一点。按打开cron选项卡

crontab -e
以下将每5分钟启动一个python脚本cronjob.py:

5 * * * * python /path/to/script/cronjob.py
编辑:由于op指定“希望算法每5分钟运行一次”:


如果您在linux环境中工作,可以为此使用cron作业。按打开cron选项卡

crontab -e
以下内容将每隔5分钟启动一个python脚本cronjob.py:

5 * * * * python /path/to/script/cronjob.py
编辑:由于op指定“希望算法每5分钟运行一次”:

crunch\u numbers()
time.time()
clock定义的5分钟边界上调用


crunch\u numbers()
在由
time.time()
clock定义的5分钟边界上被调用。

这可以工作,但我有一些变量需要存储在代码中,如果我使用它,我想会回到初始状态solution@DiegoDiTommaso:放置此信息(您需要“在调用之间保留状态”)我来回答你的问题。提到如果一次迭代花费的时间超过5分钟,您希望发生什么(您希望跳过下一次迭代还是同时运行两次迭代?)。如果计算机时间跳跃(向前/向后),如果计算机被挂起,您希望发生什么?是否要跳过相应的迭代?不是“每五分钟”而是“每五分钟一次”。是的,我需要保留呼叫之间的状态,很抱歉,我在第一条消息中不清楚,我的意思是,我希望算法每5分钟运行一次(例如14:00;14:05;14:10;14:15……)。该算法(检索数据并计算数字)本身大约需要12秒才能执行。如果计算机挂起,我将跳过迭代。谢谢这可能会起作用,但我有一些变量需要存储在代码中,如果我使用它,我想这些变量会回到初始状态solution@DiegoDiTommaso:将此信息(您需要“保留呼叫之间的状态”)放入问题中。提到如果一次迭代花费的时间超过5分钟,您希望发生什么(您希望跳过下一次迭代还是同时运行两次迭代?)。如果计算机时间跳跃(向前/向后),如果计算机被挂起,您希望发生什么?是否要跳过相应的迭代?不是“每五分钟”而是“每五分钟一次”。是的,我需要保留呼叫之间的状态,很抱歉,我在第一条消息中不清楚,我的意思是,我希望算法每5分钟运行一次(例如14:00;14:05;14:10;14:15……)。该算法(检索数据并计算数字)本身大约需要12秒才能执行。如果计算机挂起,我将跳过迭代。谢谢此解决方案正在运行,但仍然存在一个问题,算法将在整个第五分钟内循环,是否有方法仅执行一次?另一件事,是否有方法在不关闭控制台的情况下停止循环?为了避免第一个问题,我添加了
时间。睡眠(60)
在任何情况下,要停止执行,只需按终端中的“CTRL+C”即可。此解决方案可行,但仍存在问题,算法将在整个第五分钟内循环,是否有方法只执行一次?另一件事,有没有办法在不关闭控制台的情况下停止循环?为了避免您的第一个问题,我添加了一个
时间。睡眠(60)
在每种情况下要停止执行,只需在terminalrelated:related中按“CTRL+C”: