2

我在名为“in/”的文件夹中有数百个文本文件。我需要运行一个 python 脚本,该脚本一次获取一个文件,对其进行处理并将其放入名为“out/”的文件夹中。我有 python 脚本来执行此操作。由于要处理的文本文件的数量非常大(10000)并且所有文件处理都是独立的,我想使用“make -j”来充分利用我有 8 个内核的 CPU。我创建了一个如下所示的 make 文件:

SCRIPT_DIR:=/home/xyz/abc/scriptFolder<br/>
IN_DIR:=/home/xyz/abc/data/in/in10000<br/>
OUT_DIR:=/home/xyz/abc/data/out/out10000<br/><br/>
chk:  
    cd $(OUT_DIR); \<br/>
    python $(SCRIPT_DIR)/process_parallel.py --inFile $(IN_DIR)/\*

如前所述,process_parallel.py 一次接收一个文件,对其进行处理并将其作为文本文件放入当前文件夹(即 OUT_DIR)中。在此之后我运行 htops 并检查。我只能看到一个进程在运行,而当我使用 -j 8 运行它时我应该看到 8。你能指导我哪里错了吗?

4

1 回答 1

0

我的第一个想法是编写一个 shell 脚本来执行此操作。就像是:

for f in in/*.txt;
do
    ./process_parallel.py $f &
done
wait

您的操作系统调度程序应该负责跨 CPU 内核并行处理。然后,您可以在 Makefile 中调用该脚本。

还有 GNU Parallel https://www.gnu.org/software/parallel/

于 2013-10-24T19:45:53.747 回答