这个问题可以用语言无关的方式回答,但我使用的是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
答案 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