多线程和从一个文件读取(perl)

时间:2011-10-03 07:05:11

标签: multithreading perl file fork

Hej敏锐的头脑!

我需要你的专家指导做出一些选择。

情况是这样的: 我约有。包含100到50000条必须处理的记录的500个平面文件。 2.上述文件中的每条记录都必须使用包含100-200万条记录的单独大文件(2-15Gb)中的值进行替换。

所以我想用多核进行处理 - 每个线程/分叉一个文件。

这是个好主意吗?由于每个线程需要从同一个巨大的文件中读取?将它加载到内存中的大小有点问题吗?使用file :: tie是一个选项,但它是使用线程/分支吗?

需要建议如何继续。

由于

1 个答案:

答案 0 :(得分:2)

是的,当然,将多个内核用于多线程应用程序是一个好主意,因为这就是这些内核的用途。虽然听起来你的问题涉及繁重的I / O,但是,无论如何你可能不会使用那么多的CPU。

此外,由于您只是要阅读该大文件,tie应该可以正常工作。我没有听说过这个问题。但是如果你要在较小的文件中为每个记录搜索那个大文件,那么我想尽管你使用了多少个线程,但这需要很长时间。如果大文件中的数据可以根据某些键进行索引,那么我建议将其放入一些NoSQL数据库并从您的程序中访问它。这可能比使用多个线程/核心更能加速你的任务。