作业报告
学生姓名:学号:指导教师:
学生E-mail:
一、作业名称:英文统计词频程序的实现
二、作业要求
以英文文章为例,利用执行体程序库实现一个多进程词频统计的程序。对于给定的多个目录,并发地统计每个目录下的所有文件(假设每个文件中只有英文字符)中单词出现的次数,并最终汇总出在给定目录下所有文件中单词出现次数,然后记录下来。该过程要求采用多线程协作方式。
三、设计与实现
1、设计思路
首先分析程序设计的需求,要对多个目录下的文件进行词频统计,如果只用一个进程顺序的对各个目录下各个文件进行计算,会消耗很大时间,另外也无法充分发挥执行体程序库的优势。而且要求采用多线程协作方式,这样很自然的会想到创建一些进程去各个目录下进行统计,最后用一个进程统一管理这些进程,那么父进程和子进程的思想就出来了。这个过程中,我们是将一个任务划分成了多个任务并行地去执行,最后把这些子任务的执行结果汇总起来就是整个任务的结果,其实这就是Map-Reduce思想——把整个任务执行过程划分为映射(Map)和化简(Reduce)两个阶段。
在词频统计程序设计中,这两个阶段具体工作划分如下:
1、映射(Map)阶段:
①.主进程根据输入的目录数量创建多个子进程,每个子进程处理一个
目录;
②.子进程获得目录名后,遍历整个目录,统计该目录下的每个文件的