如何解决Python asyncio等待超时不适用于无限任务
在Python 3.8中,我想我理解下面的const
函数为什么也不会在1秒后超时,除非我包含const
。这是因为它从队列中退出后就开始执行,并且队列中没有其他任务因为它从未阻塞而没有运行?
我需要完成的是调用用户提供的某些功能(像永远一样)。它们可能会给我一个永不返回的函数(例如,它无限循环且不会阻塞)。那么如何获得想要的效果,即调用用户函数并使它运行直到超时?
forever
解决方法
异步/等待使用单个线程在异步任务(事件循环,队列)之间切换。
您的任务不会超时,导致您的forever
通过以同步方式无限执行并且不允许任何其他异步任务(或同一线程中的任何其他代码)接管而完全阻塞线程。如果您预计用户可能提供的某些功能将包含很长的同步计算,则应使用单独的process来运行这样的功能。
理论上,由于GIL,您可以在CPython中使用单独的线程而不是进程,而不能使用单独的线程。使用GIL一次只能执行一个线程。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。