Пул потоков медленный и такой же скорости, как и последовательный

0
задан Waleed Saleh 20 March 2019 в 11:03
поделиться

2 ответа

Многопоточность в python для задач, связанных с процессором, ограничена GIL и эффективно заставляет один поток выполняться одновременно.

Конечно, если вы запустите несколько потоков для задач, связанных с процессором, производительность будет даже снижена, потому что для интерпретатора ядра и python для управления этими потоками требуется много ресурсов.

Ядро хочет запланировать эти потоки, а python хочет запретить одновременную работу этих потоков, и в результате происходит много переключений контекста, что снижает производительность.

Если вы используете только numpy в потоках, то все будет в порядке, поскольку GIL не затронут [112], поскольку он использует атомарные операции, но я не уверен, верно ли это для OpenCV также.

Потоки в python не предназначены для вычислительных задач.

Это классическая проблема потоков с python, рассмотрите возможность использования multiprocessing, и есть ряд статей на эту тему, вы можете проверить несколько из них.

0
ответ дан Rohit 20 March 2019 в 11:03
поделиться

Потоки не выполняются параллельно в cpython. Попробуйте вместо этого использовать ProcessPoolExecutor.

0
ответ дан seenorth 20 March 2019 в 11:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: