Я написал программу, которая вызывает функцию со следующим прототипом:Запуск нескольких экземпляров программы python эффективно и экономично?
def Process(n):
# the function uses data that is stored as binary files on the hard drive and
# -- based on the value of 'n' -- scans it using functions from numpy & cython.
# the function creates new binary files and saves the results of the scan in them.
#
# I optimized the running time of the function as much as I could using numpy &
# cython, and at present it takes about 4hrs to complete one function run on
# a typical winXP desktop (three years old machine, 2GB memory etc).
Моя цель состоит, чтобы запустить эту функцию ровно 10000 раз (для 10000 различных значений «п») в кратчайшие & наиболее экономичным способом. после этих прогонов у меня будет 10 000 различных двоичных файлов с результатами всех отдельных сканирований. обратите внимание, что каждая функция «run» независима (это означает, что между отдельными прогонами не существует никакой зависимости).
Итак, вопрос в этом. имея только один компьютер дома, очевидно, что мне понадобится около 4,5 лет (10 000 пробегов x 4 часа за прогон = 40 000 часов ~ = 4,5 года), чтобы завершить все прогоны дома. Тем не менее, я хотел бы, чтобы все прогоны были завершены в течение недели или двух.
Я знаю, что решение предполагает одновременное обращение к множеству вычислительных ресурсов. что является лучшим (самый быстрый/самый доступный, поскольку мой бюджет ограничен), способ сделать это? я должен купить сильный сервер (сколько это будет стоить?) или я могу запустить этот онлайн-проект? в таком случае, мой личный код подвергается воздействию, делая это?
в случае, если это помогает, каждому экземпляру «Process()» требуется только около 500 МБ памяти. Благодарю.
Что делает «процесс»? Без дополнительной информации я не думаю, что легко увеличить скорость более чем на 2 раза (при условии, что это двухъядерный процессор). – kennytm
KennyTM: спасибо за ваш ответ. даже если время выполнения уменьшается вдвое (что маловероятно), мне все равно потребуется 2,5 года для запуска всего. следовательно, здесь основное внимание уделяется параллелизующей стороне проблемы. если у вас есть хорошая идея для этого, это было бы здорово. –