带有多线程操作单元的轻量级管道。

tinypipe的Python项目详细描述


t键入

tinyppe是一个轻量级库,有助于应用管道模式。管道的一般形式如下:

       |---|    |----|    |- -|    |----|    |---|
... -> | Q | -> | OP | -> | Q | -> | OP | -> | Q | -> ...
       |---|    |----|    |---|    |----|    |---|

当数据通过管道时,它首先被输入到输入队列中(上面用Q表示)。下面的操作单元(OP)抓取它并产生一个结果,然后将其输入输出队列。此过程将继续,直到数据遇到没有输出队列的终止OP

构建块用于管道构建,其中每个操作单元(由Pipe表示)拥有一个线程并单独运行。还包括一个ParallelPipe,用于运行多线程的操作。有关详细信息,请参阅文档。

设置

python版本:3.6+(其他版本未测试,请随意试用!)

要安装tinyppe

$ pip install tinypipe

用法

假设每个数据都必须按顺序通过函数f1f2f3。管道的建造方式如下:

importtinypipeastp# 1. Create pipelinepipeline=tp.Pipeline()# 2. Append pipes to pipelinef1_pipe=tp.pipe.FunctionPipe(f1)pipeline.append(f1_pipe)f2_pipe=tp.pipe.FunctionPipe(f2)pipeline.append(f2_pipe)f3_pipe=tp.pipe.FunctionPipe(f3)pipeline.append(f3_pipe)# One can call `pipeline.extend([f1_pipe, f2_pipe, f3_pipe])` instead# 3. Build & start the pipeline# Once the pipeline is started, it will keep trying to get data to process## The following `pipeline.build()` call is optional. `pipeline.start()` will# make the call if it is not called.## pipeline.build()pipeline.start()# 5. Feed data into the pipelinedata_iterator=...fordataindata_iterator:pipeline.put(data)# 6. If all the data has been passed into the pipeline,#    wait for it to finish all the work.pipeline.join()

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java无法启动应用程序:JNLP错误   java根据用户输入在PreparedStatement中使用setTime()或setNull()   java EJB与同步   java以object为键通过hashmap进行搜索   java中的模10^9+7   针对包含其他对象的对象的java OOP最佳实践   如何将字符串作为HTML代码从Java文件读取到JSP页面?   java我的POM怎么了?“解析表达式..检测到递归表达式循环”   用于Hbase的Mapreduce的java NoSuchMethodError   JAVAlang.SecurityException:权限拒绝:启动意图{act=安卓.Intent.action.MAIN cat=[安卓.Intent.category.LAUNCHER]   数组初始化谜语Java   通过arraylist搜索时的java句柄关联