Я использую python -mip (с фоном с открытым исходным кодом), и когда я задаю, например,
self.max_seconds=80
model.optimize(max_seconds=self.max_seconds, max_nodes=self.max_nodes)
Модель все еще может оптимизироваться в течение нескольких часов. Таким образом, вопрос состоит из двух частей:
Почему этот параметр не работает? Должно ли оно использоваться по-другому?
Пока я не могу решить проблему напрямую. Есть ли способ инкапсулировать его (например, вызвать его как процесс и убить его, если он не возвращается вовремя) Я пробовал это, но это не останавливает ... (возможно, он имеет более одного процесса и не все убиты исключением повышения? import mip, sys, threading
try:
timer = threading.Timer(self.max_seconds * 1.5, quit, args=["optimizing"])
timer.start()
timed_out = False
model.preprocess = 0
model.optimize(max_seconds=self.max_seconds , max_nodes=self.max_nodes)
except KeyboardInterrupt as e:
timed_out = True
except TimeoutError as e:
timed_out = True
finally:
timer.cancel()
def quit(fn_name):
sys.stderr.flush() # stderr is buffered
raise TimeoutError