使用渐近线完成程序

时间:2011-09-19 21:41:31

标签: python exit-code

这个问题可以用语言无关的方式回答,但我使用的是python(fyi)。

我正在运行一个无限循环,需要在最后一分钟内终止< 10个新对象被发现。

例如:


while True:
    newobjs = dig_more_objects(obj)
    if less than 10 newobjs have been discovered over the last minute
        break

编辑:问题是这样的:我如何实现这一行:
if less than 10 newobjs have been discovered over the last minute

3 个答案:

答案 0 :(得分:1)

这是一个粗略的尝试 - 取决于你可能需要调整条件dig_more_objects的性质:

import time
results = []
while True:
    mark = time.time()
    newobjs = dig_more_objects(obj)
    elapsed = time.time() - mark
    results.append((newobjs, elapsed))
    count = 0
    threshhold = 0
    for objs, elapsed in results[::-1]:
        count += len(objs)  # or +1 of dig_more_objects only returns one at a time
        threshhold += elapsed
        if threshhold > 60.0 and count < 10:
            break

答案 1 :(得分:0)

使用collections.deque来保存已发现对象的时间,如果您弹出的值小于一分钟,并且双端队列中有9个或更少的项目,请跳出循环。如果有超过9个项目,请不要忘记将其推回。超过一分钟的物品会被丢弃。

答案 2 :(得分:0)

您可以使用计时器尝试multiton pattern并设计此类。有关想法,请参阅this