#python #multiprocessing #pytest #pytest-xdist
Вопрос:
Я использую pytest-xdist для распараллеливания своих тестов. Машина, над которой я работаю, имеет 12 ядер. Половина моих тестов использует 2 процесса в каждом тесте, в то время как другая половина тестов использует только один процесс (обычная одиночная обработка).
В настоящее время я добавляю addopts = -n6 в свой файл pytest.init, поскольку для некоторых тестов на самом деле требуется два процесса (6 * 2 = 12 или все доступные ядра на моей машине). Мне было интересно, можно ли указать количество ядер, используемых в каждом тесте?
Например, все тесты, в которых используются 2 процесса, я бы пометил таким образом, и pytest-xdist в идеале знал бы, что для этих тестов нужно использовать 2 процесса из своего пула работников. Тогда я могу изменить свой файл pytest.ini, чтобы включить addopts = -n12? Я не мог понять, как это сделать, прочитав документацию, возможно, это невозможно.
Большое спасибо!
Комментарии:
1. Я не знаю и не смог найти никакого механизма для информирования pytest о том, что следует запускать меньше процессов из-за отдельного теста, использующего более одного ядра. Пока вы не запускаете сотни процессов на ядро, слишком большое количество процессов просто добавляет немного накладных расходов. Эти накладные расходы, вероятно, меньше, чем штраф за недостаточное использование ядер в случае аварии с точки зрения выполнения всех задач за заданный промежуток времени.
2. Спасибо вам за ваш ответ. В моем конкретном случае использование pytest для использования всех доступных ядер с-n12 приводит к замедлению по сравнению с-n6, поэтому я хотел знать, можно ли назначить несколько ядер для одного теста.