是否有强制传递非响应函数的方法

  • 本文关键字:响应 函数 方法 是否 python
  • 更新时间 :
  • 英文 :


如果这是显而易见的,很抱歉。我以前从未遇到过这种问题。我有一个循环,它调用了一个有问题的函数。99%的情况下,函数会正确返回字符串。另外1%,它什么也不做。它不会引发任何错误,也不会返回任何内容,也不允许我的代码继续到下一行。我曾考虑在一个线程中执行循环,在另一个线程执行计时器,希望终止有循环的线程,但我读到,你必须等待线程完成才能关闭。有人知道在代码挂起时强制终止线程或强制继续到其他行的方法吗?

当我中断代码时,我会从库中挂起的特定行得到一个回调,但我的经验不足,无法自信地进去解决别人的函数。

为了澄清,我正在找一个变通办法。不是我正在调用的函数的修复程序。

我认为这不会有帮助,但以下是有问题的循环

while(True):
start = time.perf_counter()
FEN_board = [["","","","","","","",""],["","","","","","","",""],["","","","","","","",""],["","","","","","","",""],
["","","","","","","",""],["","","","","","","",""],["","","","","","","",""],["","","","","","","",""],]
t1 = threading.Thread(target = find_white_pieces)
t2 = threading.Thread(target = find_black_pieces)
t1.start()
t2.start()
t1.join()
t2.join()
print(create_FEN())
FEN = create_FEN()
FEN = FEN + ' w'
stockfish.set_fen_position(FEN)

move = stockfish.get_best_move() # <---- The function that halts my code completely
print(move)
print(f"Completed in:  {time.perf_counter() - start} seconds")

文件";c: \Users\tomma\Desktop\code stuff\python files\sracatch_work.py",第165行,在move=stockfish.get_best_move((File";C: \Users\tomma\AppData\Local\Programs\Python39\lib\site-packages\stockfish\models.py";,第257行,在get_best_move text=self中_read_line((文件"C: \Users\tomma\AppData\Local\Programs\Python39\lib\site-packages\stockfish\models.py";,第109行,在_read_line中返回self_stockfish.stdout.readline((.strip((文件"C: \Users\tomma\AppData\Local\Programs\Python39\lib\encodings\cp1252.py";,第22行,在decode-def-decode(self,input,final=False(中:键盘中断

我不确定我是否理解你的问题。如果它什么都不返回,你的意思是它返回一个Nonetype对象还是一个空字符串。

因为在这种情况下,你只需要做

if func() == np.nan() or func() == '':
continue

如果它抛出错误,你可以进行

try:
func()
except:
continue

最新更新