gpt4 book ai didi

perl - 在perl中使用多线程处理文件

转载 作者:行者123 更新时间:2023-12-02 07:46:53 26 4
gpt4 key购买 nike

我正在 PERL 中寻找一个在概念上类似于 mapreduce 的通用过程,其中给定一个 perl 中的输入文件,我可以拥有 #N(用户指定的数字)个不同的文件句柄,这些文件句柄从文件的不同部分读取。

换句话说,我不想通过一个句柄读取文件,而是想同时从#N 个不同的 block 读取文件。为此,我理想情况下不希望首先将文件分成 #N 个不同的子文件。如果单个文件可以通过非干扰文件句柄从不同位置读取而没有任何数据泄漏,那就太好了。

下游目标是在每个文件句柄读取的数据上运行#N mapper 之类的作业,然后在完成所有操作后,我使用类似 reducer 的东西来合并每个 mapper 的输出。

让我知道这是否有意义。在我看来,利用我们现有的每个代码库上的多核机器并进行一些更改只是一件简单的事情。可能已经有类似的东西了。

非常感谢您的评论。

谢谢!-阿比

最佳答案

seek命令可以将文件句柄的光标移动到文件中的任意位置。如果您知道文件的大小,您可以执行以下操作:

  1. 选择 N 个点,在整个文件中均匀分布。
  2. 打开文件的N个文件句柄
  3. 让每个文件句柄查找到文件中的不同点。
  4. 在每个文件句柄上,读取直到到达一行的开头(记录,无论什么)
  5. 处理文件,直到您到达下一个点之后的记录。 tell命令会在您处理时告诉您当前位置。

关于perl - 在perl中使用多线程处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6364634/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com