我需要使用 gnuplot 处理大量数据文件,以便生成电影中收集的图像。由于该过程非常耗时,我想并行生成帧,并且应不时打印一条小消息以通知用户进度。
我尝试了makefile方法:
SOURCES=$(wildcard ./*.in)
OBJECTS=$(SOURCES:.in=.out)
all: $(OBJECTS)
%.out: %.in
./worker.sh $< $@
worker.sh 是:
gnuplot << EOF
set some_gnuplot_options
set output "$2"
plot "$1"
EOF
但:
- 我无法打印进度消息,
- 我更喜欢单文件解决方案(我没有成功将内容
worker.sh
直接放在makefile中), - 对于包含所有指令的单个 gnuplot 脚本,该解决方案引入了相当多的开销。
可能最终的解决方案是为 gnuplot 提供一个不错的 c++ 接口,但我不太了解现有的接口,而且我不确定如何完成这项工作。还有什么想法吗?请避免暗示像 GNU 并行这样的新程序或不太常见的程序,因为我无法在我使用的某些机器上使用它们。