Executando vários comandos do Gnuplot em paralelo com o Gnu Parallel

Executando vários comandos do Gnuplot em paralelo com o Gnu Parallel

Gostaria de executar uma lista de comandos do Gnuplot em paralelo.

Estou recebendo um erro de "Opção não reconhecida":

$ ./parallel-plot-sine.sh | parallel -q gnuplot
unrecognized option -e "set terminal pngcairo; set output '100.png'; set title 'Sample rate: 100'; set key left box; set autoscale; set samples 100; plot [-30:20] sin(x)"

Acho que isso indica que o Gnuplot não está satisfeito com o comando que está sendo alimentado, mas não consigo entender o porquê.

O shell script parallel-plot-sine.shcompõe os comandos que alimentarão o Gnu Parallel:

#!/bin/bash

# Compose command-lines to run in parallel
command_array=()
for fs in $(seq 100 100 1000); do
    command_array+=("-e \"set terminal pngcairo; set output '${fs}.png'; set title 'Sample rate: $fs'; set key left box; set autoscale; set samples $fs; plot [-30:20] sin(x)\"")
done

# Print command strings to output for gnu parallel
for cmd in "${command_array[@]}"; do
    printf "%s\n" "$cmd"
done

Isso imprime:

$ ./parallel-plot-sine.sh
-e "set terminal pngcairo; set output '100.png'; set title 'Sample rate: 100'; set key left box; set autoscale; set samples 100; plot [-30:20] sin(x)"
-e "set terminal pngcairo; set output '200.png'; set title 'Sample rate: 200'; set key left box; set autoscale; set samples 200; plot [-30:20] sin(x)"
-e "set terminal pngcairo; set output '300.png'; set title 'Sample rate: 300'; set key left box; set autoscale; set samples 300; plot [-30:20] sin(x)"
-e "set terminal pngcairo; set output '400.png'; set title 'Sample rate: 400'; set key left box; set autoscale; set samples 400; plot [-30:20] sin(x)"
-e "set terminal pngcairo; set output '500.png'; set title 'Sample rate: 500'; set key left box; set autoscale; set samples 500; plot [-30:20] sin(x)"
-e "set terminal pngcairo; set output '600.png'; set title 'Sample rate: 600'; set key left box; set autoscale; set samples 600; plot [-30:20] sin(x)"
-e "set terminal pngcairo; set output '700.png'; set title 'Sample rate: 700'; set key left box; set autoscale; set samples 700; plot [-30:20] sin(x)"
-e "set terminal pngcairo; set output '800.png'; set title 'Sample rate: 800'; set key left box; set autoscale; set samples 800; plot [-30:20] sin(x)"
-e "set terminal pngcairo; set output '900.png'; set title 'Sample rate: 900'; set key left box; set autoscale; set samples 900; plot [-30:20] sin(x)"
-e "set terminal pngcairo; set output '1000.png'; set title 'Sample rate: 1000'; set key left box; set autoscale; set samples 1000; plot [-30:20] sin(x)"

Esses comandos funcionam sozinhos assim:

gnuplot -e "set terminal pngcairo; set output '1000.png'; set title 'Sample rate: 1000'; set key left box; set autoscale; set samples 1000; plot [-30:20] sin(x)"

Responder1

Entrada de cotações GNU Parallel por padrão. Você fornece informações que já foram citadas. Existem várias soluções.

Altere a entrada de:

-e "set terminal pngcairo; set output '100.png'; set title 'Sample rate: 100'; set key left box; set autoscale; set samples 100; plot [-30:20] sin(x)"

para:

set terminal pngcairo; set output '100.png'; set title 'Sample rate: 100'; set key left box; set autoscale; set samples 100; plot [-30:20] sin(x)

e corra:

... | parallel gnuplot -e

Alternativamente:

... | parallel eval gnuplot

# Requires version >= 20190722
... | parallel gnuplot {=uq=}

informação relacionada