Python如何实现让一个函数超时退出?
需求: 多个子线程同时调用a函数处理数据,如何实现让a函数超时之后return或者raise?
1 signal不能在子线程中使用,pass
2 把函数扔到进程里,开销太大,pass
3 把函数扔到单独线程里,改编进程类另其可接受终止信号,再开另外一个线程做监控,不易实现,且个人认为杀掉进程对系统资源的风险很大.
有没有什么好的解决方案,或者已有类库里面的timeout参数都是如何实现的呢?gevent有没有什么好的线程终止方案?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你的意思是函数一直在做cpu密集型的计算任务吗?可以把任务分割,执行完一个小任务后检查是否超时,超时return,否则继续。
补充:
这样吧
我这边的输出是:
不知道你面对的场景是不是这样,具体问题还要具体分析。
signal模块:
参考http://blog.sina.com.cn/s/blo...
先看看函数里有哪些可能阻塞的地方,有timeout的话加timeout.