我正在使用一些python代码,这很复杂(至少对我而言)。有许多对象,模块和函数可以调用其他函数等。
运行代码时,有时出了点问题。 (有意义的是,它并不总是出错,因为它涉及采样和随机数等。)
当代码出错时,它不会崩溃,但是我会无限次重复输出输出(如果我停了足够长的时间,它可能会停止运行):
Diagonal element of covariance matrix = 0
Diagonal element of covariance matrix = 0
Diagonal element of covariance matrix = 0
.
.
我似乎无法弄清楚在许多导入的模块中哪个正在产生此消息。我什至不知道代码在什么时候发生,因为其他任何输出都会从屏幕上丢失。我不想将所有输出都读入文本文件,因为代码运行很长时间才能成功或失败,而且我猜该文件会很大。
有什么方法可以使我的代码在开始发出此Diagonal element of covariance matrix = 0
消息后立即中断。然后,我至少可以弄清楚问题出在哪里。
也欢迎其他任何想法!
答案 0 :(得分:1)
虽然我不愿意这么说,但是最好的选择可能是使用某种计时器终止函数的执行。例如,您可以在代码中放入类似内容以终止该函数,然后尝试生成新的随机矩阵,或尝试手动修复协方差矩阵。
import time
import signal
def black_box():
while True:
print("Diagonal element of covariance matrix = 0")
def signal_handler(signum, frame):
raise Exception("Timed out!")
signal.signal(signal.SIGALRM, signal_handler)
signal.alarm(5) # Upper bound of execution normal time
try:
black_box()
except Exception:
# Handle timeout
pass
signal.pause()
祝你好运...