我正在制作一个计算器,当您try 计算一个较高的数字(如9⁹⁹⁹⁹⁹⁹)来计算此问题时,代码冻结,我想设置一个超时,如果计算花费的时间超过3秒,结果就是"NaN". 计算结果的代码片段如下所示,但它不起作用.如果计算时间超过3秒,则不会取消该任务.
async def do_calculation(realcalculation, X, Y, A, B, C):
try:
result = str(numerize(sympy.sympify(realcalculation).subs(dict(X=X, Y=Y, A=A, B=B, C=C))))
except:
result = "NAN"
raise
return result
async def calculate(realcalculation, X, Y, A, B, C):
loop = asyncio.get_running_loop()
task = loop.create_task(do_calculation(realcalculation, X, Y, A, B, C))
try:
result = await asyncio.wait_for(task, timeout=3)
except asyncio.TimeoutError:
task.cancel()
result = "NAN"
return result
result = await calculate(realcalculation, X, Y, A, B, C)