cpu有多个核心,在默认的程序运行中只使用了一个核心,其它的核心处于闲置状态。
可以使用mulltiprocessing模块以多进程处理程序。
通常有两种方式:
#使用进程池pool
import multiprocessing as mp
def multicpu():
print(mp.cpu_count())
pool = mp.Pool()
re = pool.map(job, [10000,10,1])
print(re)
def job(x):
y=0
for i in range(x):
for j in range(x):
y=y+x
return y
if __name__ == '__main__':
multicpu()
mp.cpu_count():获取cpu可用核心个数
job是需要多进程处理的函数;multicpu执行多进程处理;pool是一个任务池,输入参数空默认使用cpu的所有核心,输入参数为某一数字确定使用核心个数。
map函数执行进程池任务,参数一为待执行job函数,参数二为可迭代输入参数序列。
最后返回[1000000, 1000, 1];
import multiprocessing as mp
def job(q,x):
y=0
for i in range(x):
for j in range(x):
y=y+x
q.put(y)
if __name__ == '__main__':
q = mp.Queue()
p1 = mp.Process(target=job, args=(q,10))
p2 = mp.Process(target=job, args=(q,100))
p1.start()
p2.start()
p1.join()
p2.join()
res1 = q.get()
res2 = q.get()
print(res1)
print(res2)
print(res1 + res2)
Queue存储进程输出,Prrocess建立进程,target为目标函数,args为输入参数;start(),开始进程;join()执行进程;
结果为1000
1000000
1001000