from multiprocessing import Pool
import numpy
if __name__ == '__main__':
pool = Pool()
roots = pool.map(numpy.sqrt, range(100))
print (roots)
1. pool = Pool() launches one slave process per physical processor
on the computer. On Unix systems, the slaves are forked from the
master process. Under Windows, a new process is started that
imports the script. 一個核開一個線程
2. pool.map(numpy.sqrt, range(100)) divides the input list into chunks
of roughly equal size and puts the tasks (function + chunk) on a
todo list.一個核的一個線程執行一個代碼
3. Each slave process takes a task (function + a chunk of data)
from the todo list, runs map(function, chunk), and puts the result
on a result list.一個核的一個線程的一個代碼執行一次任務
3. pool.map on the master process waits until all tasks are handled
and returns the concatenation of the result lists.合計所有任務
參考 https://calcul.math.cnrs.fr/attachments/spip/Documents/Ecoles/2013/python/Multiprocessing.pdf