如何在Python中识别进程处于卡住状态
我每天午夜都会在服务器上运行 python 文件,有时它会进入“卡住”状态。这是 5 或 6 天后发生的吗?
Python 脚本在运行过程中不占用太多内存或负载,如果发布 120 个文档,则需要 4 小时。
以下步骤:
- 运行Python脚本custom.py
- 1 小时后,如果没有相同的脚本正在运行,则再次运行相同的 python 脚本。
如果脚本是前一个脚本仍在系统中,则相同的脚本将不会终止。
但是正在运行的脚本进入 Froze 或 Zombie 状态的进程,则下次脚本将不会运行,因为渗透脚本仍在系统中。
最佳答案
如果您希望脚本因超时而被终止,并且您使用的是 UNIX,则可以使用 SIGALRM:Timeout on a function call
如果您想防止启动同一脚本的多个副本,有多种解决方案。最简单的是ps aux | grep
。如果还不够,你可以使用 filelock 包 https://pypi.python.org/pypi/filelock/
但根据我的经验,它仍然不稳定。最好的解决方案是使用 sys-v ipc 信号量 http://semanchuk.com/philip/sysv_ipc/ 。您可以设置undo
进程终止后删除信号量锁的标志。
关于python - 如何在Python中识别进程处于卡住状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33500663/