繁体   English   中英

如何使用 c# 和并行扩展并行化顺序任务?

[英]How to parallelize sequential tasks using c# and parallel extensions?

我有以下按顺序调用的方法:

  1. 私有 StringBuilder ReadPDF();
  2. 私有 StringBuilder CleanText(StringBuilder sb);
  3. 私人无效 ParseText();

ParseText 调用 ReadPDF 调用 CleanText;

我正在解析的 PDF 有 15MB 的文本,使用普通的 core 2 duo 计算机从文件中提取所有数据需要 10 分钟。

如何并行化这些任务?

编辑:澄清一下,阅读 PDF 需要很少的时间,问题在于解析提取的文本,更具体地说是在 CleanText 阶段。 我需要并行化的原因是清理单个页面是即时的,但是清理 2k+ 个页面需要很长时间。

首先,您可能需要回顾一下您阅读 PDF 的方式。 如果它只有 15MB,除非您使用一些非常非常糟糕的解析方式,否则它不会花费 10 分钟来阅读。 其次,在你找到更好的解析方式之后,你应该确保你可以从你需要的任何页面中一次读取一个页面。 之后,您将能够并行运行多个读取单个页面的任务。

逐页阅读 PDF 并使用流水线处理每一页。

http://blogs.msdn.com/b/pfxteam/archive/2010/04/14/9995613.aspx

正如之前在一篇文章中提到的,您可能做错了什么。 它只有 15MB PDF,阅读它不应该花费 10 分钟。

正如丹尼斯所说,您可以阅读文本的一部分,通常是一页,但您可以将其分成更小的块,然后在阅读下一部分文本时处理该文本。

如果您想了解更多关于并行编程的信息,您可以在MSDN 并行计算中心找到很好的信息和实验室。

MDN 还有一篇Parallel Programming with .NET 博客

还有一本好书 Professional Parallel Programming with C#: Master Parallel Extensions with .NET 4 by Gastón Hillar

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM