【问题标题】:Run a Python function for x seconds?运行 Python 函数 x 秒?
【发布时间】:2016-06-21 13:50:55
【问题描述】:

我有一个数据流,我需要从中解析和提取值,创建这些值的列表并将它们以嵌套列表方式附加到列表中,例如主列表[[firstExtractedValue],[SecondExtractedValue]...]。 mainList 的创建必须在 15 分钟内运行,之后我遍历 mainList 并创建第二个列表。如果我调用 sleep() 或 threading.Timer,则不会创建列表,因为两者都在给定的时间段后运行。我需要该函数在给定的时间段内运行(即它需要创建 15 分钟的列表)。

【问题讨论】:

  • 为什么你想要一个特定的时间,而不是一个(更简单的)特定的数字
  • 要求执行应该持续特定的时间是没有意义的。您可能想要的是:每 15 分钟开始执行此任务。
  • 您可以查看您开始的时间,并在循环中查看是否已经过了 15 分钟。查看日期时间模块
  • 你如何以迭代的方式解析/提取/添加项目,每N个项目检查从开始到现在经过的时间——15分钟后,执行列表轮换。这种方法不行吗?
  • @jonrsharpe 数据流是异步的,在任何给定的 15 分钟段中,我可以接收 1000 或 10,000 个值。此外,我用来计算第二个列表的算法需要时间量而不是出现次数。

标签: python multithreading python-2.7


【解决方案1】:

您可以定期检查时间,并在 15 分钟后结束,不是吗?比如:

import datetime
def func(maxrt):
    stop = datetime.datetime.now() + maxrt
    while datetime.datetime.now() < stop:
        # do stuff

func(datetime.timedelta(minutes=15))

【讨论】:

  • 等哎呀!不知何故,我错过了使用 datetime 模块。我认为你们都是对的。我对python有点菜鸟。我相信你的方法应该有效。谢谢。
  • 不用担心。很容易过于专注而错过简单的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-11
  • 2012-06-04
  • 1970-01-01
  • 2016-07-24
  • 2019-07-08
  • 1970-01-01
  • 2020-06-09
相关资源
最近更新 更多