找回密码
 注册
搜索
热搜: 超星 读书 找书
查看: 493|回复: 5

[【其它】] 被python3的time.sleep搞惨了~

[复制链接]
发表于 2024-1-20 14:04:56 | 显示全部楼层 |阅读模式
本帖最后由 mygiss 于 2024-1-20 14:07 编辑

系统win2022 server,管理员登陆,已完全安装python3.12.1, 开dos窗口运行python3程序,代码如下:

import datetime,time

def getNowstr():
    gg_now = datetime.datetime.now()
    return datetime.datetime.strftime(gg_now, '%Y%m%d %H:%M:%S')

if __name__ == "__main__":
    while True:
        try:
            gmin = datetime.datetime.now().minute
            print(f"{getNowstr()}:gmin={gmin} loop ")
            if gmin % 10 == 8:
                print(f"{getNowstr()}:MIN=8")
            print(f"{getNowstr()}:Before time.sleep")
            time.sleep(60)
            print(f"{getNowstr()}:After time.sleep")
        except Exception as e:
            print(f"An error occurred: {e}")

理想状态应该一直打印运行,然而,会不定时地在time.sleep(60)这句发生假死,错误也捕捉不到,就是卡死在time.sleep(60)这儿了,什么时候假死不一定,可能没几行,也可能大半天甚至几天,但是一定会假死,例如输出是:

python ttest.py
20240120 09:46:31:gmin=46 loop
20240120 09:46:31:Before time.sleep


刚开始运行就假死了,按一下回车键还能继续运行:

20240120 09:47:31:After time.sleep
20240120 09:51:25:gmin=51 loop
20240120 09:51:25:Before time.sleep
20240120 09:52:25:After time.sleep
20240120 09:52:25:gmin=52 loop
20240120 09:52:25:Before time.sleep
20240120 09:53:25:After time.sleep
20240120 09:53:25:gmin=53 loop
20240120 09:53:25:Before time.sleep
20240120 09:54:25:After time.sleep
20240120 09:54:25:gmin=54 loop
然后再什么时候假死不知道了。我要的是非常稳定的定时操作,这样假死程序就阻塞不动了。

通过网络查找,试过很多方案的代码,如:

chatGPT给出Python time.sleep()假死(挂起)的解决办法                https://blog.csdn.net/xiaoyw71/article/details/130471509
python中sleep引起的程序假死现象                https://zhuanlan.zhihu.com/p/358987957


还有很多办法,都试过,无一例外都会不定时假死,晕了~
不知道高手有没有遇到这样的情况,怎么解决?我已经没招了
在win2008、python2.7运行,几乎没有time.sleep假死的情况,所以程序一跑可以几个月不用管。


评分

1

查看全部评分

回复

使用道具 举报

发表于 2024-1-20 14:37:25 | 显示全部楼层
老实说,准备搞什么脚本?
回复

使用道具 举报

 楼主| 发表于 2024-1-20 14:39:49 | 显示全部楼层
业务代码啊,定时执行,不想用系统的计划任务。
回复

使用道具 举报

 楼主| 发表于 2024-1-20 15:11:46 | 显示全部楼层
刚才再想了想,也可能是print这里卡住,查了查,确实有的人也遇到这种情况。不知道有没有过来人能指点下?
回复

使用道具 举报

发表于 2024-1-20 22:24:33 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2024-1-21 09:48:38 | 显示全部楼层
agent124 发表于 2024-1-20 22:24
查了下,说可能是powershell的原因:https://stackoverflow.com/questions/10902925/pythons-time-sleep-ha ...

谢谢!!
我取消过快速编辑模式,还是会不定时假死,讨厌的是这个什么时候出现不知道,昨晚我运行到现在还是正常的,但有时一启动没几行就假死了~

回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|网上读书园地

GMT+8, 2024-12-22 15:19 , Processed in 0.201657 second(s), 10 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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