通过装饰器方式实现生产者消费者模式。可以作用于函数、类的方法上,使其变为异步调用,同时,转变为逐次调用,批量执行。方便将零碎的调用转变为批量形势进行统一执行。
prodconpattern的Python项目详细描述
ProducerConsumerPattern
通过装饰器方式实现生产者消费者模式。 可以作用于函数、类的方法上,使其变为异步调用,同时,转变为逐次调用,批量执行。方便将零碎的调用转变为批量形势进行统一执行。
Github 地址:ProducerConsumerPattern
安装
pip install prodconpattern
示例代码
函数调用:逐次调用 -> 异步逐次调用
fromprodconpatternimportProducerConsumer@ProducerConsumer(threshold=3)defmethod_single_invoke(n):"""函数调用:逐次调用 -> 异步逐次调用"""print('method_single_invoke ->',n)importtime# 函数调用:逐次调用 -> 异步逐次调用forninrange(10):print("call -> method_single_invoke(%d)"%n)method_single_invoke(n)time.sleep(6)
函数调用:逐次调用 -> 异步批量调用
fromprodconpatternimportProducerConsumer@ProducerConsumer(threshold=3,pass_arg_list=True)defmethod_list_invoke(n):"""函数调用:逐次调用 -> 异步批量调用"""print('method_list_invoke ->',n)importtime# 函数调用:逐次调用 -> 异步批量调用forninrange(10):# time.sleep(1)print("call -> method_list_invoke(%d)"%n)method_list_invoke(n)time.sleep(6)
对象方法调用:逐次调用 -> 异步批量调用
fromprodconpatternimportProducerConsumerclassAClass:@ProducerConsumer(threshold=3,pass_arg_list=True,is_class_method=True)defclass_method_list_invoke(self,n):"""对象方法调用:逐次调用 -> 异步批量调用"""print(self.__class__.__name__,"print_method",n)importtime# 对象方法调用:逐次调用 -> 异步批量调用aaa=AClass()forninrange(10):print("call -> class_method_list_invoke(%d)"%n)aaa.class_method_list_invoke(n)time.sleep(6)
更多例子参考 example.py 文件