лучший способ распараллеливания в оболочке - PullRequest
1 голос
/ 11 апреля 2019

У меня есть эксперимент, который мне нужно выполнить много раз и отследить время его выполнения.

Мой код Python должен запускаться несколько раз с разными входами, а также несколько раз для одного и того же ввода, чтобы получить среднее время выполнения для каждого отдельного ввода.

Я думаю об использовании распараллеливания (и я делаю это в bash), но я не знаю, как подойти к нему, потому что мне нужно отслеживать все и затем представлять результаты в виде графика.

Меня беспокоит то, что если я хочу, чтобы все было в одном файле с помощью команды parallel, у меня будут неупорядоченные данные, поскольку я не могу контролировать, какое задание заканчивается первым.Если я решу, например, иметь все выходные данные определенного ввода в одном файле (назначенном этому конкретному входу), а затем получить среднее значение из него, я получу много файлов, и это может сделать следующий шаг более трудным.

Я не прошу код, я просто хочу лучше понять (если возможно) алгоритм, который я могу использовать.может быть, способ управления порядком заданий (FIFO), созданный parallel, другой инструмент распараллеливания, может быть ...?Помощь

Ответы [ 2 ]

1 голос
/ 25 апреля 2019

Может ли один из них сработать для вас?

parallel --keep-order myexperiment ::: a r g s 1 ::: a r g s 2 > output-in-order
parallel --results mydir/ myexperiment ::: a r g s 1 ::: a r g s 2
parallel --results myfile{1}-{2} myexperiment ::: a r g s 1 ::: a r g s 2
parallel --results myfile.tsv myexperiment ::: a r g s 1 ::: a r g s 2

Если вы ученый, последний интересен, потому что его может прочитать непосредственно Р.

0 голосов
/ 12 апреля 2019

Вы запускаете все сценарии одновременно (например, в цикле), и каждый сценарий перенаправляет свой результат в отдельный файл

Для этого используйте в именах тестовых журналов, например:

Log_file_name. $$. Log => Log_file_name.1548.log

$$: вернуть номер процесса скрипта (который является одним значением)

Надеюсь, это поможет вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...