我的任务是提高进行 rpc 调用的效率。我相信我可以使用生产者和消费者的例子。生产者将得到响应,而消费者将收到的对象写入文件。
我为生产者和消费者问题编写了一个示例程序。这看起来不错的样子。但是,我的问题是消费者如何知道何时退出?
这是我的代码:
5 is_exit = False
6 product = []
7
8 def consumer(cond):
9 global product
10 global is_exit
11
12 while True:
13 cond.acquire()
14 while len(product) == 0:
15 cond.wait()
16 product = product[1:]
17 print 'consume one product'
18 cond.release()
19
20 def producer(cond):
21 global product
22 global is_exit
23
24 for i in range(10):
25 cond.acquire()
26 print 'produce one good'
27 product.append(199)
28 cond.notify()
29 cond.release()
/// I use .join() to wait all threads to finish.
由于生产者只会生产 10 件商品,因此必须有某种方式通知消费者生产者不会生产任何东西,您应该退出。
任何建议都会有所帮助。非常感谢。
PS。我“优雅地”的意思是,一旦生产者告诉他没有更多的商品要生产,我希望消费者不会做任何额外的工作。