我创建了一个简单的子字符串搜索程序,它递归地查看文件夹并扫描大量文件。该程序使用 Boyer-Moore-Horspool 算法,在解析大量数据方面非常有效。
程序链接:http: //pastebin.com/KqEMMMCT
我现在要做的是让它更有效率。如果查看代码,您会注意到搜索了三个不同的目录。我希望能够创建一个同时搜索每个目录的进程/线程,这将大大加快我的程序。
实现这一点的最佳方法是什么?我已经做了一些初步研究,但我的实现并不成功。它们似乎在 25 分钟左右的处理后就死掉了(现在单进程版本需要将近 24 小时才能运行;数据量很大,并且有 648 个唯一关键字。)
我使用多处理 API 进行了各种实验,并将所有各种文件压缩为 3 个文件(每个目录一个),然后通过 mmap() 将文件映射到内存,但是我不确定这是否是合适的路线去,然后 b:我的程序总是在随机点死掉,调试绝对是一场噩梦。
是的,我已经进行了广泛的谷歌搜索,但我在池/线程/子进程/多线程/多处理之间感到非常困惑。
我不是要你写我的程序,只是帮助我理解实施解决方案所需的思考过程。谢谢!
仅供参考:我计划在程序运行后开源代码。我认为这是一个相当有用的脚本,并且在线提供的多处理现实世界实现的示例有限。