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

本文关键字:并行化 顺序 任务 扩展 并行 何使用 | 更新日期: 2023-09-27 17:57:45

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

  1. private StringBuilder ReadPDF()
  2. private StringBuilder CleanText(StringBuilder sb)
  3. private void ParseText()

ParseText调用ReadPDF,后者调用CleanText;

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

如何将这些任务并行化?

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

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

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

逐页阅读PDF,并使用Pipelining处理每一页。

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

正如之前在一篇帖子中提到的,你可能做错了什么。它只有15MB的PDF,阅读它应该不需要10分钟。

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

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

MDN也有一个与.NET并行编程的博客。

还有一本很好的书《用C#进行专业并行编程:用.NET 4进行主并行扩展》,作者是Gastón Hillar