我有一段代码需要从中获取输出:
gps = get_gps_data()
虽然如果需要很长时间才能获得输出get_gps_data()
, 我想取消该过程并设置gps
to None
。修改函数是不可能的,那么有没有办法指定等待某些代码运行的最大时间,并在达到该时间时中止,例如 5 秒?
你可以做一些像下面这样的事情。这适用于您想要检查并在一段时间后停止的任何逻辑或功能。您想要检查和取消的函数在单独的线程中执行并受到监视。等待3秒后,取消。
只需将您的代码放入test
函数(您可以重命名函数)。test
函数尝试休眠 100 秒(可以是任何逻辑)。但主要的调用future.result(3)
,仅等待 3 秒,否则抛出 TimeoutError 并遵循一些其他逻辑。
import time
import concurrent.futures as futures
def test():
print('Sleeping for 100 seconds')
time.sleep(100)
# Add your code here
# gps = get_gps_data()
return 'Done'
# Main
with futures.ThreadPoolExecutor(max_workers=1) as executor:
future = executor.submit(test)
try:
resp = future.result(3)
except futures.TimeoutError:
print('Some other resp')
else:
print(resp)
executor._threads.clear()
futures.thread._threads_queues.clear()
您可以尽量减少店内等待时间test
函数到某个值小于 3 秒。在这种情况下,返回的原始结果是test
将使用函数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)