Относительно связи многопроцессорности с ядрами сервера
Для следующего кода, предположим, что у меня 32-ядерная машина, Python решит, сколько процессов создать для меня?
from multiprocessing import Process
for i in range(100):
p = Process(target=run, args=(fileToAnalyse,))
p.start()
1 ответ
Нет, это не решает за вас.
Чтобы ограничить количество подпроцессов, вам нужно использовать пул рабочих.
Пример из документации:
from multiprocessing import Pool
def f(x):
return x*x
if __name__ == '__main__':
pool = Pool(processes=4) # start 4 worker processes
result = pool.apply_async(f, [10]) # evaluate "f(10)" asynchronously
print result.get(timeout=1) # prints "100" unless your computer is *very* slow
print pool.map(f, range(10)) # prints "[0, 1, 4,..., 81]"
Если вы пропустите, processes=4
будет использовать multiprocessing.cpu_count
которые возвращают количество процессоров.