鱼C论坛

 找回密码
 立即注册
查看: 1442|回复: 9

[已解决]怎么让程序自动重新运行?

[复制链接]
发表于 2018-10-3 19:50:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
有时候,程序在一段时间之后没有反应
怎么让程序在超过了规定的响应时间后
自动重新运行?
最佳答案
2018-10-3 21:06:56
混沌未开 发表于 2018-10-3 21:05
我有点明白你的意思了
但是感觉好像不是我要的那种方法。。。
也可能还是我没懂

呃,早说啊。。。。。。request.get(url, timeout=2)
再写个循环就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-3 20:34:44 | 显示全部楼层
我准备这样实现,利用生成器,原理大概是这样的,程序运行一会出来检查下当前时间,没超过接着运行,超过了就重新再来
代码如下
  1. import time

  2. def func(n):
  3.     print('开始运行')
  4.     for i in range(n):
  5.         print(i)
  6.         yield
  7.     print('完了')


  8. a = func(6)
  9. while 1:
  10.     try:
  11.         start = time.clock()
  12.         next(a)
  13.         elapsed = time.clock() - start
  14.         print(elapsed)
  15.         if elapsed > 0.01:
  16.             a = func(6)
  17.     except StopIteration as e:
  18.         break
复制代码

实现如图
QQ截图20181003203427.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-3 20:36:16 | 显示全部楼层
呃,另外,如果觉得需要算多次的话,在计算时间的那里,多加几个next(a)就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-3 20:44:46 | 显示全部楼层
本帖最后由 混沌未开 于 2018-10-3 20:45 编辑
RIXO 发表于 2018-10-3 20:36
呃,另外,如果觉得需要算多次的话,在计算时间的那里,多加几个next(a)就好了


如果程序就是卡在一条语句上出不来
那咋运行一会检测一下时间,我有点不懂
比如说,打开一个网页,请求一直没有,然后想着过了一定时间,重新运行整个程序
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-3 20:46:57 | 显示全部楼层
混沌未开 发表于 2018-10-3 20:44
如果程序就是卡在一条语句上出不来
那咋运行一会检测一下时间,我有点不懂

呃,你是不是不知道什么叫生成器。。。。。生成器的意思就是,到你想让他出来的那个语句,你就让它保存当前状态,出来,干干其他事,再放他回去接着干事
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-3 20:48:10 | 显示全部楼层
RIXO 发表于 2018-10-3 20:46
呃,你是不是不知道什么叫生成器。。。。。生成器的意思就是,到你想让他出来的那个语句,你就让它保存当 ...

让我回去翻翻零基础。。。。。。。
我看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-3 21:05:37 | 显示全部楼层
RIXO 发表于 2018-10-3 20:46
呃,你是不是不知道什么叫生成器。。。。。生成器的意思就是,到你想让他出来的那个语句,你就让它保存当 ...

我有点明白你的意思了
但是感觉好像不是我要的那种方法。。。
也可能还是我没懂

就比如说
  1. requests.get('http://www.google.com')
复制代码

这个语句肯定是很长时间之后才说尝试连接失败
我想的是,就是,在过了2s或者几秒,如果还没反应
就重新执行这个语句
呃,我想的就是这样

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-3 21:06:56 | 显示全部楼层    本楼为最佳答案   
混沌未开 发表于 2018-10-3 21:05
我有点明白你的意思了
但是感觉好像不是我要的那种方法。。。
也可能还是我没懂

呃,早说啊。。。。。。request.get(url, timeout=2)
再写个循环就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-3 21:07:52 | 显示全部楼层
RIXO 发表于 2018-10-3 21:06
呃,早说啊。。。。。。request.get(url, timeout=2)
再写个循环就好了

对,就是这样
脑子短路了,再写个循环啊。。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-3 21:08:36 | 显示全部楼层
RIXO 发表于 2018-10-3 21:06
呃,早说啊。。。。。。request.get(url, timeout=2)
再写个循环就好了

我想的timeout是执行完之后报错
没想还可以再加一个循环。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-17 18:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表