tomzx / dataflow

数据流处理器库

dev-master / 0.1.x-dev 2016-01-05 02:51 UTC

This package is auto-updated.

Last update: 2024-09-10 07:12:21 UTC


README

License Latest Stable Version Latest Unstable Version Build Status Code Quality Code Coverage Total Downloads

创建简单的流水线以及复杂的图表,这些图表可用于处理数据或仅在阶段依赖关系解决时进行计算。

入门

简单流水线(顺序执行)

$a = function($payload) {
	return $payload * -1;
};

$b = function($payload) {
	return $payload * 10000;
};

$pipeline = (new Pipeline)
	->pipe($a)
	->pipe($b);

// Returns 100000
$pipeline->process(-10);

// Can also be built as the following

$stages = [
	1 => [$a],
	2 => [$b, 1],
];

$pipeline = new Pipeline($stages);

图表流程

$p1 = function($payload) {
	return $payload . '1';
};

$p2 = function($payloadP1) {
	return $payloadP1 . '2';
};

$p3 = function($payloadP1) {
	return $payloadP1 . '3';
};

$p4 = function($payloadP1) {
	return $payloadP1 . '4';
};

$p5 = function($payloadP2, $payloadP3) {
	return $payloadP2 . ' ' . $payloadP3 . '5';
};

$p6 = function($payloadP5) {
	return $payloadP5 . '6';
};

$stages = [
	1 => [$p1],
	2 => [$p2, 1],
	3 => [$p3, 1],
	4 => [$p4, 1],
	5 => [$p5, 2, 3],
	6 => [$p6, 5],
];

$pipeline = new Pipeline($stages);

// Returns Test 12 Test 1356
$pipeline->process('Test ');

// May also be built using the Graph class

$graph = new Graph($stages, new Sequential);
// or $graph = new Graph($stages, new Parallel);

$results = $graph->process('Test ');

// You may inspect the output of every node
// Returns Test 1
$result->output(1);
// Returns Test 12
$result->output(2);
// Returns Test 13
$result->output(3);
// Returns Test 14
$result->output(4);
// Returns Test 12 Test 135
$result->output(5);
// Returns Test 12 Test 1356
$result->output(6);

处理器

为了处理您的图表,您提供了两个处理器:一个顺序处理器和一个并行处理器。

顺序处理器将图表转换为一系列操作以完成任务。它基本上会计算图表依赖关系,并确保在执行每个阶段之前解决这些依赖关系。使用顺序处理器,一次只能执行一个任务。

并行处理器在许多任务可以并行执行时很有用。与顺序处理器类似,它将验证提供的图表是否可以解决。然后,它将同时执行所有可以并行执行的任务。在多核处理器上,如果给定的任务是可并行的,则预期并行处理器将更快完成。

许可证

代码根据MIT许可证授权。请参阅LICENSE