参考链接: 【莫烦Python】Multiprocessing 让你的多核计算机发挥真正潜力 Python
参考链接: 莫烦多进程学习网站
参考链接: multiprocessing — 基于进程的并行
参考链接: class multiprocessing.Queue([maxsize])
参考链接: queue — 一个同步的队列类
test03_1.py
# 第4集
import multiprocessing as mp
import multiprocessing
import time
import threading as td
import queue
def job(q):
res = 0
for i in range(10000000):
res += i+i**2+i**3
q.put(res) # queue
def multicore():
q = mp.Queue()
p1 = mp.Process(target=job, args=(q,))
p2 = mp.Process(target=job, args=(q,))
p1.start()
p2.start()
p1.join()
p2.join()
res1 = q.get()
res2 = q.get()
print('multicore:' , res1+res2)
def normal():
res = 0
for _ in range(2):
for i in range(10000000):
res += i+i**2+i**3
print('normal:', res)
def multithread():
q = queue.Queue()
t1 = td.Thread(target=job, args=(q,))
t2 = td.Thread(target=job, args=(q,))
t1.start()
t2.start()
t1.join()
t2.join()
res1 = q.get()
res2 = q.get()
print('multithread:', res1+res2)
if __name__ == '__main__':
print()
start = time.time()
normal()
end = time.time()
print('normal time:', end - start)
print()
start = time.time()
multithread()
end = time.time()
print('multithread time:', end - start)
print()
start = time.time()
multicore()
end = time.time()
print('multicore time:', end - start)
控制台结果输出展示:
Windows PowerShell
版权所有 (C) Microsoft Corporation。保留所有权利。
尝试新的跨平台 PowerShell https://aka.ms/pscore6
加载个人及系统配置文件用了 896 毫秒。
(base) PS C:\Users\chenxuqi\Desktop\News4cxq\测试多进程> & 'D:\Anaconda3\python.exe' 'c:\Users\chenxuqi\.vscode\extensions\ms-python.python-2021.1.502429796\pythonFiles\lib\python\debugpy\launcher' '50485' '--' 'c:\Users\chenxuqi\Desktop\News4cxq\测试多进程\test03_1.py'
normal: 4999999666666716666660000000
normal time: 17.117331981658936
multithread: 4999999666666716666660000000
multithread time: 16.88581895828247
multicore: 4999999666666716666660000000
multicore time: 9.536233901977539
(base) PS C:\Users\chenxuqi\Desktop\News4cxq\测试多进程> conda activate base
(base) PS C:\Users\chenxuqi\Desktop\News4cxq\测试多进程>