需求: 多个子线程同时调用a函数处理数据,如何实现让a函数超时之后return或者raise?
1 signal不能在子线程中使用,pass
2 把函数扔到进程里,开销太大,pass
3 把函数扔到单独线程里,改编进程类另其可接受终止信号,再开另外一个线程做监控,不易实现,且个人认为杀掉进程对系统资源的风险很大.
有没有什么好的解决方案,或者已有类库里面的timeout参数都是如何实现的呢?gevent有没有什么好的线程终止方案?
参考:
http://stackoverflow.com/ques...
你的意思是函數一直在做cpu密集的運算任務嗎?可以把任務分割,執行完一個小任務後檢查是否超時,超時return,否則繼續。
補充:
這樣吧
我這邊的輸出是:
不知道你面對的場景是不是這樣,具體問題還要具體分析。
signal模組:
參考http://blog.sina.com.cn/s/blo...
先看看函數裡有哪些可能阻塞的地方,有timeout的話加timeout.