>  Q&A  >  본문

线程 - Python如何实现让一个函数超时退出?

需求: 多个子线程同时调用a函数处理数据,如何实现让a函数超时之后return或者raise?

1 signal不能在子线程中使用,pass
2 把函数扔到进程里,开销太大,pass
3 把函数扔到单独线程里,改编进程类另其可接受终止信号,再开另外一个线程做监控,不易实现,且个人认为杀掉进程对系统资源的风险很大.

有没有什么好的解决方案,或者已有类库里面的timeout参数都是如何实现的呢?gevent有没有什么好的线程终止方案?

参考:
http://stackoverflow.com/ques...

阿神阿神2717일 전422

모든 응답(3)나는 대답할 것이다

  • 大家讲道理

    大家讲道理2017-04-18 09:17:49

    함수가 CPU 집약적인 컴퓨팅 작업을 수행했다는 뜻인가요? 작업을 분할하고 작은 작업을 실행한 후 시간 초과 여부를 확인하고 시간 초과되면 반환하고 그렇지 않으면 계속할 수 있습니다.

    보충사항:
    이렇게 합시다

    으아악

    내 결과는 다음과 같습니다.

    으아악

    당신이 직면한 시나리오가 이런 것인지는 모르겠습니다. 구체적인 문제를 자세히 분석해야 합니다.

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-18 09:17:49

    신호 모듈:

    참고 http://blog.sina.com.cn/s/blo...

    회신하다
    0
  • 怪我咯

    怪我咯2017-04-18 09:17:49

    먼저 함수에서 차단 가능한 위치를 살펴보세요. 시간 초과가 있는 경우 시간 초과를 추가하세요.

    회신하다
    0
  • 취소회신하다