У меня есть два типа браузера: firefox (40 экземпляров) и хром (40 экземпляров) на моей сетке селена. Кроме того, у меня есть куча тестов, некоторые из них должны быть выполнены на firefox, некоторые из них под хром. Некоторым из них все равно.Как реализовать индивидуальный многопроцессорный непрерывный (асинхронный) контроль в python?
Первое решение, которое было рекомендовано @skrrgwasme, состояло в том, чтобы разделить тесты, которые не нуждаются в конкретных браузерах в двух группах, чтобы иметь, наконец, две очереди (одна - для запуска на firefox, вторая для выполнения на хроме): How to implement custom control over python multiprocessing.Pool?
Это решение является приятным, но его можно улучшить: поскольку браузер обрабатывает свои запросы с разной скоростью, хром будет быстрее заканчивать свою очередь, а очередь firefox будет работать намного дольше. Это можно решить с помощью пользовательского непрерывного управления, когда я решаю, какой браузер использовать не до создания пулов, но когда этот пул уже запущен.
Итак, у нас должен быть один бассейн, где каждый процесс икры контролируется нами.
@skrrgwasme рекомендовал использовать для этого apply_async
. Но я просто не могу понять, как это может быть достигнуто в python, так как это не async, как node.js.
Не могли бы вы привести несколько примеров? У меня есть очень крошечный опыт работы с Python, и, кажется, полностью застрял с этим :(
Вы заботитесь о возвращаемой стоимости каждого работника в пуле? – dano
@ dano на самом деле нет, мне ничего не нужно возвращать. Мне просто нужно выполнить какой-то код, когда все задачи будут завершены. – avasin
На какой платформе вы нацеливаетесь? – dano