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

问题描述

| 我有以下被顺序调用方法: 私有StringBuilder ReadPDF(); 私人StringBuilder CleanText(StringBuilder sb); 私有void 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分钟。     ,        正如Denis所说,您可以阅读部分文本,通常是一页,但是您可以将其分成较小的块,然后在阅读下一部分文本时对其进行处理。 如果您想了解有关并行编程的更多信息,可以在MSDN并行计算中心找到良好的信息和实验。 MDN也有一个.NET并行编程博客。 还有一本不错的书,由GastónHillar撰写,有C#专业并行编程:.NET 4的Master Parallel Extensions。