否。您可以做的是在一个单独的进程中启动优化器,跟踪其运行时间并在必要时终止它:
from multiprocessing import Process, Queueimport timeimport randomfrom __future__ import print_functiondef f(param, queue): #do the minimization and add result to queue #res = minimize(param) #queue.put(res) #to make this a working example I'll just sleep a #a random amount of time sleep_amount = random.randint(1, 10) time.sleep(sleep_amount) res = param*sleep_amount queue.put(res)q = Queue()p = Process(target=f, args=(2.2, q))max_time = 3t0 = time.time()p.start()while time.time() - t0 < max_time: p.join(timeout=1) if not p.is_alive(): breakif p.is_alive(): #process didn't finish in time so we terminate it p.terminate() result = Noneelse: result = q.get()print(result)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)