Я довольно новичок программист, и я впервые ставил свою руку на многопроцессорную обработку. После того, как я столкнулся с обычными ошибками травления, я искал здесь и обнаружил, что Пафос, вероятно, лучше всего использовать.Многопроцессорность, имеющая проблемы
Точка приложения полностью связана с коллекцией серверов с помощью ssh, извлекает данные и хранит их в базе данных. Он отлично работает, но, очевидно, было бы полезно, если бы он выполнял многопроцессорную обработку.
вызов исходной функции выглядит следующим образом:
devices = sq.sqlOperation("SELECT * from Devices")
for device in devices:
pullNewData(device)
Короче говоря, SQL-запрос дает мне список словарей, кормлю pullNewData() словарь для каждой записи, он идет, соединяет, тянет все через и обновляет базу данных.
Я предпочел бы не переписать несколько тысяч строк кода, так что я надеюсь, что адаптация будет легко: Все из следующих примеров имеем:
from pathos.multiprocessing import ProcessingPool as Pool
На вершине. Я пробовал:
devices = sq.sqlOperation("SELECT * from Devices")
p = Pool(4)
p.apipe(pullNewData, devices)
Который молча потерпел неудачу, даже с Try/за исключением вокруг него
devices = sq.sqlOperation("SELECT * from Devices")
p = Pool(4)
p.map(pullNewData, devices)
То же, бесшумный неудачу:
Однако:
devices = sq.sqlOperation("SELECT * from Devices")
p = Pool(4)
for data in devices:
p.apipe(pullNewData(data))
работал но просто проходили каждый поочередно.
В моем отчаянии я даже пытался положить его внутри списка понимания (что, да, это ужасно некрасиво, но в тот момент я бы сделал что-нибудь)
devices = sq.sqlOperation("SELECT * from Devices")
p = Pool(4)
[ p.apipe(pullNewData(data)) for data in devices ]
Итак, как бы я это сделать ? Как я могу запустить его для каждой новой записи параллельно?
Вы пробовали 'Pool (1)'?(чтобы проверить, не является ли проблема с тем, как вы используете пафос или если это проблема синхронизации в вашем коде) – thebjorn
Хорошо, после некоторых попыток, которые, похоже, уволили их в унисон сейчас, но я столкнулся с другой проблемой где соединение парамико не работает. Хммм ... –
Короче говоря, спасибо, вот и все. После исправления некоторых проблем с моим кодом, мы в сети! –