walleeee 发表于 2020-5-8 18:48:34

time.sleep() 卡死怎么办

请问我写了一个段代码,大概就是隔几分钟访问一次网站。
因为不想过于频繁的访问,所以我引入了import time
time.sleep(120)
让代码休息两分钟再继续访问。
但是有的时候,代码 休息过就醒不来了,请问这是什么问题,有什么好的解决方案。

zero_sunshine 发表于 2020-5-8 18:48:35

我用命令行执行代码的时候会出现这种情况,一般来说,如果卡住了按一下回车就可以解决。
当然,这不是解决办法,还是建议使用pycharm执行,一般不会有这个问题

hrp 发表于 2020-5-8 18:53:39

什么叫醒不过来,具体是什么症状

walleeee 发表于 2020-5-8 18:55:29

import requests
import time
url = 'https://baidu.com'
while True:
    req = requests.session()
    try:
      req.get(url)
    print('sleep 120 seconds')
    time.sleep(120)
    print('wake up')
    del req


代码大概就是这样,有时就一觉不醒了,网上说线程的什么原因,我也搞不懂,所以请大佬帮我一下

walleeee 发表于 2020-5-8 18:57:27

hrp 发表于 2020-5-8 18:53
什么叫醒不过来,具体是什么症状

就是 没有 ‘wake up’ 的输出了 可以看下楼下代码

hrp 发表于 2020-5-8 19:14:18

walleeee 发表于 2020-5-8 18:57
就是 没有 ‘wake up’ 的输出了 可以看下楼下代码

注释掉5.6.7.11行再运行试试,看看是不是网络请求没返回的原因

walleeee 发表于 2020-5-8 19:18:24

hrp 发表于 2020-5-8 19:14
注释掉5.6.7.11行再运行试试,看看是不是网络请求没返回的原因

sleep 120 seconds
是输出了的,我觉得不是网络请求的问题

_2_ 发表于 2020-5-8 19:26:46

hrp 发表于 2020-5-8 18:53
什么叫醒不过来,具体是什么症状

……什么症状,
大概是安眠药吃多了吧?{:10_256:}

walleeee 发表于 2020-5-8 19:31:14

https://stackoverflow.com/questions/2342397/pythons-time-sleep-never-waking-up
就类似这个的问题,但是他没给解决办法

ba21 发表于 2020-5-8 19:40:34

walleeee 发表于 2020-5-8 18:55
代码大概就是这样,有时就一觉不醒了,网上说线程的什么原因,我也搞不懂,所以请大佬帮我一下

这段代码根本不可能存在time.sleep不醒的问题。
问题只会出现在 req.get(url) 访问出错,或超时,导至代码无法继续往下执行。

hrp 发表于 2020-5-8 19:42:24

walleeee 发表于 2020-5-8 19:18
sleep 120 seconds
是输出了的,我觉得不是网络请求的问题

那加个条件让while循环只循环一次,看看行不行(我想到了刚学写界面的时候想用循环和sleep在按钮上间隔循环显示文字,结果程序在循环中是卡死状态,循环结束后只显示了最后一个文字,最后用多线程解决)

hrp 发表于 2020-5-8 19:44:05

_2_ 发表于 2020-5-8 19:26
……什么症状,
大概是安眠药吃多了吧?

也可能是因为三天没睡过觉了{:10_247:}

赚小钱 发表于 2020-5-8 20:16:58

方法很多, pstack, strace, /proc/${pid}/stack 文件, top 命令看进程状态

walleeee 发表于 2020-5-8 20:33:48

hrp 发表于 2020-5-8 19:42
那加个条件让while循环只循环一次,看看行不行(我想到了刚学写界面的时候想用循环和sleep在按钮上间隔 ...

能给一下当时你怎么解决那个问题的方法么

永恒的蓝色梦想 发表于 2020-5-8 20:57:31

walleeee 发表于 2020-5-8 18:55
代码大概就是这样,有时就一觉不醒了,网上说线程的什么原因,我也搞不懂,所以请大佬帮我一下

我从来没听说过这么离谱的事

DavidCT 发表于 2020-5-8 21:51:19

可能神游了

hrp 发表于 2020-5-8 22:01:43

walleeee 发表于 2020-5-8 20:33
能给一下当时你怎么解决那个问题的方法么

我只是联想到而已,跟这个不是一回事,况且我运行你的代码并没有问题
import time

import requests

url = 'https://baidu.com'

while True:
    req = requests.session()
    try:
      req.get(url)
    except:
      pass
    print('sleep 120 seconds')
    time.sleep(120)
    print('wake up')
    del req

weiter 发表于 2020-5-9 08:09:28

_2_ 发表于 2020-5-8 19:26
……什么症状,
大概是安眠药吃多了吧?

同意{:10_256:}

_2_ 发表于 2020-5-9 08:53:14

永恒的蓝色梦想 发表于 2020-5-8 20:57
我从来没听说过这么离谱的事

安眠药吃多了{:10_256:}

_荟桐_ 发表于 2020-5-9 18:47:35

第一步,看看有没有呼吸和心跳
第二步,如果有,就要考虑是否是植物人
                如果没有,就要立即拨打120并做心肺复苏
祝您的程序可以早日恢复健康{:5_111:}
页: [1] 2
查看完整版本: time.sleep() 卡死怎么办