Microsoft TPL Dataflow 并行处理枚举,输出等
来源:互联网 发布:淘宝上买淘宝小号 编辑:程序博客网 时间:2024/05/22 00:18
TPL DataFlow是一个并行处理数据流的类。使用它可以做为目标输出流或写入流。
下面这个示例包括并行处理枚举,并行输出到控制台。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.Threading.Tasks.Dataflow;
using System.IO;
namespace ConsoleApplication1
{
//NuGet 查找Microsoft TPL Dataflow安装.
class Program
{
static void Main()
{
var target = setupPipeline();
target.Post("../..");
Console.ReadLine();
}
static ITargetBlock<string> setupPipeline()
{
var filenameforpath = new TransformBlock<string, IEnumerable<string>>(
path =>
{
return GetFileNames(path);
});
var line = new TransformBlock<IEnumerable<string>, IEnumerable<string>>(
lines=>
{
return LoadLine(lines);
}
);
var word = new TransformBlock<IEnumerable<string>, IEnumerable<string>>(
w =>
{
return GetWords(w);
}
);
//Action是一个数据块,它接收数据,并把它写到控制台上。它是并行的。
var display=new ActionBlock<IEnumerable<string>>(
r=>
{
foreach (var item in r)
{
Console.WriteLine(item);
}
}
);
//启动语句块
filenameforpath.LinkTo(line);
line.LinkTo(word);
word.LinkTo(display);
return filenameforpath;
}
static IEnumerable<string> GetFileNames(string path)
{
foreach (var item in Directory.EnumerateFiles(path,"*.cs"))
{
yield return item;
}
}
static IEnumerable<string> LoadLine(IEnumerable<string> file)
{
foreach (var item in file)
{
using(var stream = File.OpenRead(item))
{
var r = new StreamReader(stream);
string line=null;
while ((line=r.ReadLine())!=null)
{
yield return line;
}
}
}
}
static IEnumerable<string> GetWords(IEnumerable<string> line)
{
foreach (var item in line)
{
var t = item.Split(' ', ',', ';');
foreach (var word in t)
{
yield return word;
}
}
}
}
}
- Microsoft TPL Dataflow 并行处理枚举,输出等
- TPL dataflow
- XBRL并行加载测试结果:TPL
- 22 C# 第十八章 TPL 并行编程
- TPL
- TPL - Part 2 异常处理常用方式
- 并行处理
- 并行处理
- zf框架下smatry模板tpl输出xls文件
- 文本处理库 tpl-1.0.00 正式发布!
- MPI并行实现枚举排序
- DataFlow-支持Greenplum、Oracle等数据库的ETL工具(1)--概述
- sed行处理详解(交换行,合并行,删除行等)
- 用一般处理程序输出图片文件等
- winForm 合并行处理
- php 并行处理
- OpenMP并行处理编程
- Oracle 并行处理
- [Vijos 1137] 组合数 · 数学
- 实现护士工作站的注射室管理功能的代码(十六)
- 完整Debian7配置LAMP(Apache/MySQL/PHP)环境及搭建建站
- JSTL 核心标签库 使用
- 面试题之求二叉树的深度
- Microsoft TPL Dataflow 并行处理枚举,输出等
- 从哪里开始
- 智力题 诚实国和说谎国
- 图像处理 灰度图像直方图
- Deep Learning源代码收集-持续更新…
- zoj-1002
- CSS伪类和伪元素
- 使用JAXP进行DOM解析
- Netty之java序列化