При использовании Windows PowerShell можно сделать следующее:
Get-Content someFile.txt -wait
Похоже, у вас 3-ядерный процессор. Если вы хотите использовать более одного ядра ЦП в собственном коде Python, вам необходимо запустить несколько процессов. (Два или более потока Python не могут работать одновременно на разных процессорах)
Как R. Пейт сказал, что модуль многопроцессорной обработки Python является односторонним. Однако я бы посоветовал вместо этого взглянуть на Parallel Python . Он заботится о распределении задач и передаче сообщений. Вы даже можете запускать задачи на множестве отдельных компьютеров с небольшим изменением кода.
Использовать его довольно просто:
import pp
def parallel_function(arg):
return arg
job_server = pp.Server()
# Define your jobs
job1 = job_server.submit(parallel_function, ("foo",))
job2 = job_server.submit(parallel_function, ("bar",))
# Compute and retrieve answers for the jobs.
print job1()
print job2()
Попробуйте модуль multiprocessing , как Python, хотя и имеет настоящие собственные потоки, ограничивает их одновременное использование, пока сохраняется GIL. Другая альтернатива, на которую вы должны обратить внимание, если вам нужна реальная скорость, - это написание модуля расширения C и вызов в нем функций из Python. Вы можете освободить GIL в этих функциях C.
См. Также Дэвида Бизли Mindblowing GIL .
Вам следует выполнить мониторинг операционной системы и Python, чтобы определить где находится бутылочное горлышко.
Вот некоторая информация для Windows 7:
Performance Monitor : вы можете использовать Windows Performance Monitor, чтобы исследовать, как программы, которые вы запускаете, влияют на производительность вашего компьютера, как в режиме реального времени, так и путем сбора данные журнала для последующего анализа. ( Панель управления-> Все элементы панели управления-> Информация о производительности и инструменты-> Дополнительные инструменты-> Просмотр монитора производительности)
Монитор ресурсов : Монитор ресурсов Windows - это системный инструмент, который позволяет просматривать информацию об использовании ресурсов оборудования (ЦП, память, диск и сеть) и программного обеспечения (дескрипторы файлов и модули) в режиме реального времени. Вы можете использовать Resource Monitor для запуска, остановки, приостановки и возобновления процессов и служб. ( Панель управления-> Все элементы панели управления-> Информация о производительности и инструменты-> Дополнительные инструменты-> Просмотр монитора ресурсов )
Глобальная блокировка интерпретатора
Причины использования такой блокировки включают:
* повышенная скорость однопоточных программ (нет необходимости устанавливать или снимать блокировки по всем структурам данных отдельно) * простая интеграция библиотек C, которые обычно не являются потокобезопасными.
Приложения, написанные на языках с GIL должен использовать отдельные процессы (т.е. переводчики) для достижения полной параллелизм, так как каждый интерпретатор имеет собственный GIL.
Узкое место, вероятно, где-то еще, например, жесткий диск (подкачка) или доступ к памяти.
Судя по загрузке процессора, похоже, что вы все еще работаете на одном ядре. Попробуйте выполнить тривиальный расчет с 3 или более потоками с одним и тем же кодом потоков и посмотрите, все ли ядра используются. Если это не так, возможно, что-то не так с вашим кодом потоковой передачи.