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