【发布时间】:2017-03-16 22:21:56
【问题描述】:
背景
我将以下命令作为 shell 脚本存储在 execution.sh
cat input_file | tee output_file | java program
我成功地使用./execution.sh & 从 input_file 读取数据,将数据存储在单个 output_file 中,并作为输入发送到 java 程序。
问题
我想将input_file中的数据多次输出到output_file以及java程序。
例如并行读取相同的input_file 5 次并将数据发送到单个output_file 和单个java program。
编辑
尝试过的解决方案
execution.sh
{
python2 readLines.py &
python2 readLines.py &
python2 readLines.py &
python2 readLines.py &
python2 readLines.py &
} | tee output_file | java program
readLines.py
with open('inputfile') as f:
for line in f:
print line
我目前正在使用这个,如果有人在这里看到任何问题,例如比赛条件等,请发表评论。
【问题讨论】:
-
为什么要这样做?因为我不认为这是一个好主意。
-
这是一个糟糕的主意,因为如果没有独占写锁,每个进程都会覆盖其他进程的数据。另外,即使您确实有排他锁,也很难管理数据排序。你为什么要这样做是一个很好的问题。
-
我想模拟 apache 所做的事情。多个进程正在将日志写入单个
error_log文件,该文件也被teeed 到用java 编写的消费者。我不关心日志的顺序对我来说重要的是java程序处理的最后的总数。 -
Apache 不会像你描述的那样做任何事情。
-
制作一个小程序,从输入中读取一行,写入并休眠一小段随机时间。启动这个程序 5 次,输出重定向到输出文件。
标签: java bash parallel-processing pipe tee