在一定时间后继续循环

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在一定时间后继续循环相关的知识,希望对你有一定的参考价值。

如果给定的迭代花费的时间超过一定时间,您将如何移动到for循环的下一次迭代?代码看起来应该是这样的。

for i in range(0, max_iterations):
       timer function
       call to api

如果api尚未完成,则定时器函数将用于强制for循环继续到下一次迭代。它应该在120秒内完成该迭代。如何写入定时器功能?先感谢您!

答案

只有非阻塞API调用或具有超时的API调用才能实现这一点。例如,如果您使用套接字库,则可以使用socket.setblocking(0)to使套接字API调用非阻塞。

在您的情况下,您说您正在使用Yandex API。这似乎是通过https的JSON,所以你可能希望尝试urllib2.urlopen()。此方法接受超时。这比使用非阻塞调用更容易,因为urlopen()将在超时到期后放弃并返回错误。

使用某些注释中建议的线程将为您提供部分解决方案。由于无法停止使用线程模块启动的线程,因此您启动的所有未完成的API调用将在python解释器的生命周期内保持阻塞状态,并且这些线程将永远不会退出。

如果你确实使用线程模块来解决这个问题,那么你应该让所有运行API调用的线程都守护程序线程thread.setDaemon(True),这样当你的主线程退出时,解释器就会停止。否则,在完成并返回所有API调用之前,解释器不会退出。

以上是关于在一定时间后继续循环的主要内容,如果未能解决你的问题,请参考以下文章

js中循环嵌套

继续后如何返回循环的特定部分?

常用python日期日志获取内容循环的代码片段

当活动被破坏但我必须继续执行片段中的代码时该怎么办?

Python循环运行一定的秒数

递归函数中的for循环在递归结束后继续