加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 在一定时间后继续for循环

发布时间:2020-12-20 13:16:47 所属栏目:Python 来源:网络整理
导读:如果给定的迭代花费的时间超过一定时间,您将如何移动到for循环的下一次迭代?代码看起来应该是这样的. for i in range(0,max_iterations): timer function call to api 如果api尚未完成,则定时器函数将用于强制for循环继续到下一次迭代.它应该在120秒内完成
如果给定的迭代花费的时间超过一定时间,您将如何移动到for循环的下一次迭代?代码看起来应该是这样的.

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

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

解决方法

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读