python中生产者消费者线程问题
高洛峰
高洛峰 2017-04-18 10:27:07
0
2
632

在使用python的多线程时,使用了生产者消费者模式,一般都是消费者接受生产者的数据执行某些操作,但是现在这个消费者线程遇到了异常,需要终止执行,但是生产者线程因为还在生产数据,主线程在等待它执行完。目前想当消费者线程遇到错误时能够通知生产者线程,我挂了,你也结束吧。请问大家有什么好的实现方法

import threading

class Producer(threading.Thread):

    def __init__(self, queue):
        super(Producer, self).__init__()
        self.queue = queue

    def run(self):
        while True:
            for i in range(10):
                self.queue.put(i)

class Consumer(threading.Thread):

    def __init__(self, queue):
        super(Consumer, self).__init__()
        self.queue = queue

    def run(self):
        while True:
            try:
                data = self.queue.get()
                print data
                if data == 5:
                    raise ValueError('over')
            except ValueError as e:
                #通知生产者结束
                #如何实现?
            
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

모든 응답(2)
PHPzhong

내 방법:
플래그를 추가합니다.

먼저 결과를 살펴보겠습니다.

더 이상 헛소리는 그만하고 코드를 보여주세요

으아악

마지막으로 Python의 멀티스레딩에 대해 이야기하겠습니다. GIL의 존재로 인해 멀티스레딩은 실제로 언제 사용하는 것이 최선의 선택이 아닐 수 있습니다. 자신의 비즈니스 상황에 따라 멀티스레딩 모듈을 구하세요.

PHPzhong

간단히 말하면 오류를 발생시키고 프로세스가 자체적으로 충돌하도록 놔두세요.
또는 예외 처리를 사용하여 소비자 실행을 래핑하고 예외를 포착한 다음 생산을 제어할 수도 있습니다. 아래.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿