Multiprocessamento Python: por que os tamanhos grandes de pedaços são mais lentos?

Eu tenho perfilado algum código usando o módulo de multiprocessamento do Python (a função 'job' apenas agrega o número).

data = range(100000000)
n=4
time1 = time.time()
processes = multiprocessing.Pool(processes=n)
results_list = processes.map(func=job, iterable=data, chunksize=10000)
processes.close()
time2 = time.time()
print(time2-time1)
print(results_list[0:10])

Uma coisa que achei estranha é que o tamanho ideal do bloco parece ter cerca de 10 mil elementos - isso levou 16 segundos no meu computador. Se eu aumentar o tamanho do pedaço para 100k ou 200k, ele diminuirá para 20 segundos.

Essa diferença pode ocorrer devido ao tempo necessário para a decapagem ser mais longa para listas mais longas? Um tamanho de 100 partes leva 62 segundos, o que eu suponho que seja devido ao tempo extra necessário para passar os pedaços entre os diferentes processos.

questionAnswers(1)

yourAnswerToTheQuestion