Я долго искал что-то подобное в моей прошлой работе, когда мы хотели быстро перебрать код, который должен был работать на многих рабочих в кластере.Все коммерческие проекты с открытым исходным кодом, которые я обнаружил, были основаны на выполнении фиксированного кода с произвольными входами, а не на произвольном коде.
Мне также было бы интересно узнать, есть ли что-то, что я пропустил.Но в моем случае я закончил строить свое собственное решение (к сожалению, не с открытым исходным кодом).
Мое решение было:
1) Я создал очередь Redis, где каждая задача состояла из zip-файла со сценарием установки bash (для установки в pip и т. Д.), Сценария Python "полезной нагрузки"для запуска, и файл pickle с входными данными.
2) Сценарий Python «полезной нагрузки» считывает файл pickle или другие файлы, содержащиеся в файле zip.Будет выведен файл с именем output.zip.
3) В качестве рабочего задания был скрипт Python (работающий на удаленной машине, прослушивающий очередь Redis), который разархивирует файл, запустит скрипт установки bash, затем запустите скрипт Python.При выходе из сценария рабочий загружал файл output.zip.
Существовали различные оптимизации, например, рабочий не запускал один и тот же сценарий установки bash два раза подряд (он запоминал хэш SHA1 из самых последнихскрипт настройки).Так что, в любом случае, в худшем случае вы могли бы это сделать.На настройку ушла неделя или две.
Редактировать:
Второй (намного более ручной) вариант, если вам просто нужно запустить на одной удаленной машине, * должен использовать sshfs
для локального монтирования удаленной файловой системы, чтобы вы могли быстро редактировать файлы в Spyder.Затем оставьте окно ssh открытым для удаленного компьютера и запустите Python из командной строки, чтобы протестировать сценарии на этом компьютере.(Это моя стандартная установка для разработки программ Raspberry Pi.)