2013-10-24 15 views
2

我在名为“in /”的文件夹中有数百个文本文件。我需要运行一个一次只能读取一个文件的python脚本,对它进行处理并将其放在名为“out /”的文件夹中。我有python脚本来做到这一点。 由于要处理的文本文件数量非常大(10000),并且所有文件处理都是独立的,所以我想使用“make -j”来充分利用具有8个内核的CPU。我创建了一个make文件看起来像这样:如何调用python脚本来并行使用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,你能指导我哪里错了吗?

回答

0

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

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

您的OS调度程序应负责并行处理跨CPU核心的处理。然后您可以在Makefile中调用脚本。

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

+0

用make -j选项,我们可以强制执行多个线程的创建和独立内核执行独立的进程。所以我正在寻找具体的解决方案。 – csurfer

相关问题