Я использую miltiprocessing, чтобы читать много кусков огромного файла, а затем обрабатывать его, но я что-то теряю, потому что иногда, когда я запускаю какой-то процесс, некоторые из них разделяют ядро. Пример: система с 12 ядрами, я запускаю 10 процессов и 6 - 6 ядер (по одному с каждым), а другие 4 - 2 ядра (по 2 в каждом ядре) ... но в других случаях он отлично работает с использованием 10 ядер на 10 процесс ...Python многопроцессорность делится ядрами
код:
from multiprocessing import Process
[...]
process1=Process(target=run_thread, args=("./splited/"+file,result,))
process2=Process(target=run_thread, args=("./splited/"+file,result,))
process3=Process(target=run_thread, args=("./splited/"+file,result,))
process1.start()
process2.start()
process3.start()
[...]
process1.join()
process2.join()
process3.join()
Это пример моего кода, я пытался с 10, когда я увидел этот вопрос.
Спасибо.
Редакцией:
- Эта машина работает без многопоточных, поэтому он имеет 12 ядер с максимум 12 параллельных потоков.
- Иногда бывает более двух человек, использующих ядро.
- Шея бутылки не является IO на этой программе, она обрабатывает каждую строку файла.
Вы действительно хотите многопроцессорную обработку? Параллелизация будет только покупать вам прирост производительности для операций, которые на самом деле являются процессорами. Это не поможет вам с узкими местами ввода-вывода. –