在使用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:
#通知生产者结束
#如何实现?
내 방법:
플래그를 추가합니다.
먼저 결과를 살펴보겠습니다.
더 이상 헛소리는 그만하고 코드를 보여주세요
으아악마지막으로 Python의 멀티스레딩에 대해 이야기하겠습니다. GIL의 존재로 인해 멀티스레딩은 실제로 언제 사용하는 것이 최선의 선택이 아닐 수 있습니다. 자신의 비즈니스 상황에 따라 멀티스레딩 모듈을 구하세요.
간단히 말하면 오류를 발생시키고 프로세스가 자체적으로 충돌하도록 놔두세요.
또는 예외 처리를 사용하여 소비자 실행을 래핑하고 예외를 포착한 다음 생산을 제어할 수도 있습니다. 아래.