2016-12-20 3 views
0

Я запускаю сложную программу вычисления на Python, которая занимает около 10 минут для работы в моей системе. Когда я смотрю на использование ЦП, один из восьми ядер колеблется около 70%, второй - около 20%, а остальные близки к 0%. Я могу каким-то образом заставить программу использовать 100% одноядерный?Управление использованием и потоками процессора в Python

Редактировать: Я признаю, что использование всех 8 ядер не является отличным вариантом, но есть ли способ заставить одно ядро ​​использовать 100% использования?

+0

Python однопоточный. –

+0

, если это не относится к python, это будет для вашей операционной системы, о которой вы не упомянули. –

+0

У этого вопроса есть ответ, который может вас заинтересовать: http://stackoverflow.com/questions/20939299/does-python-support-multithreading-can-it-speed-up-execution-time –

ответ

0

Python на самом деле не многопоточен. Вы можете создавать потоки как удобный способ управления логическими процессами, но само приложение имеет global thread lock. Из-за этого вы сможете использовать только один поток.

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

1

Для многоядерных приложений вы должны использовать модуль multiprocessing вместо threading. У Python есть некоторые (хорошо документированные) проблемы производительности с потоками. Поиск google для Global Interpreter Lock для получения дополнительной информации о производительности Python и потоках

Смежные вопросы