问题描述

        今天遇到这么一个问题:运行程序时候一直卡着不动

python preprocess.py

        在服务器上是这样: 

        在本机电脑上也是这样: 

        我查看了一下显卡占用情况发现并无占用:

watch -n 1nvidia-smi

原因分析和解决

        我先去问了一下GPT:

程序卡住不动可能是由于多种原因,如死循环、资源竞争或锁定、内存不足等。以下是一些排查和解决这种问题的方法:

1. 检查死循环和长时间运行的操作
  • 确认程序中是否有可能进入死循环的代码。
  • 确认是否有需要很长时间才能完成的操作,例如复杂的计算或大型数据的处理。
2. 使用调试器

调试器可以帮助你逐行检查代码,发现问题所在:

  • 使用调试器(如 pdb 或 IDE 内置的调试工具)逐行运行代码,检查卡住的位置。
  • 设置断点,检查在卡住之前代码的状态和变量值。
3. 打印调试信息

在关键位置添加打印语句,检查程序的执行进度:

print("Checkpoint 1")
# some code
print("Checkpoint 2")
# some code
print("Checkpoint 3")
4. 使用超时控制

对于可能长时间运行的操作,添加超时控制:

import signal

def handler(signum, frame):
    raise TimeoutError("Timeout")

signal.signal(signal.SIGALRM, handler)
signal.alarm(10)  # 10秒后触发超时

try:
    # Your code here
    pass
except TimeoutError:
    print("Operation timed out")
5. 检查资源使用

查看系统资源使用情况,检查是否有内存、CPU 或其他资源的瓶颈:

  • 使用系统监控工具(如 tophtop)查看程序的资源使用情况。
6. 使用多线程和多进程

如果程序使用多线程或多进程,检查是否有资源竞争或锁定问题:

  • 确认是否有未正确释放的锁或资源。
  • 确认没有死锁的发生。
7. 减少数据规模

如果处理的数据量很大,尝试减少数据规模,检查是否可以正常运行:

  • 减少输入数据的规模,看看是否可以避免卡住的问题。
8. 检查外部依赖

如果你的程序依赖于外部库或服务,确认这些库或服务没有问题:

  • 确认外部服务正常运行。
  • 确认外部库没有已知的性能问题或 bug。
9. 更新或重装环境

更新或重新安装你的编程环境和依赖:

  • 更新 Python 解释器和相关库到最新版本。
  • 确认没有版本兼容性问题。

        他给出的这些情况还是挺复杂的,当时也只是看到了“程序卡住不动可能是由于多种原因,如死循环、资源竞争或锁定、内存不足等。以下是一些排查和解决这种问题的方法”,就单纯的以为是程序的问题,放着没管,就在之后,我发现,原来不是这样的,因为第二天发现运行成功了,我就开始重新看这个报错!

        1、单步调试卡在了,很可能是我的计算资源不够

eigenvalues, eigenvectors = eigsh(A=laplacian_matrix, k=1000, which="SA", tol=1e-5)  

        2、我并没有查看到任何使用显存的情况,那就是说很可能使用的是内存

        用top命令查看一下,果然有这么个程序 

        再用htop命令查看一下果然如此,而且更清晰用的是这个程序

        那到现在就清晰了,并不是卡在这里了,而是一直再计算,只是cpu计算太慢了,更何况我的是至强cpu呢Intel® Xeon(R) CPU E5-2623 v3 @ 3.00GHz × 16 !

相关链接

Python程序运行时卡住,既不报错,也不停止,是什么原因 – PingCodeicon-default.png?t=N7T8https://docs.pingcode.com/ask/64674.htmlpycharm 【Debug】过程卡住不动_debugpython代码,点击step into my code之后,卡住不动了-CSDN博客文章浏览阅读9.1k次,点赞49次,收藏44次。写在前面的话该文从知乎文章(Pycharm 常见问题汇总(updating))复制过来,只做学习记录,更多pycharm的问题请参考原文。debug时查看变量(variables)卡顿,读取缓慢,不显示 。 这种情况下你会发现单步调试也卡住了,看不到执行之后的情况。解决办法: 【File】 >>【Settings】 >>【Build, Execution, Deployment】>>【Python Debugger】 >> 勾选【Gevent compa_debugpython代码,点击step into my code之后,卡住不动了https://blog.csdn.net/weixin_42899627/article/details/120050107

完结撒花 

        兄弟们,新的一周了呀~ 

 

         

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐