八、同进程下多线程无法利用多核优势
同进程下多线程无法利用多核优势
"""
多线程是否有用要看具体情况
单核:四个任务(IO密集型\计算密集型)
多核:四个任务(IO密集型\计算密集型)
"""
# 计算密集型 每个任务都需要10s
单核
开多线程
多核
多进程:总耗时10s+
多线程:总耗时40s+
# IO密集型
多核
多进程:相对浪费资源
多线程:更加节省资源
一、代码验证-计算密集型
import os
import time
from threading import Thread
from multiprocessing import Process
def zzw():
res = 0
for i in range(1,100000000):
res *= i
if __name__ == '__main__':
l = []
print(os.cpu_count()) # 获取当前计算机CPU个数
start_time = time.time()
for i in range(8):
# p = Process(target=zzw) # 6.534544467926025
# p.start()
# 1 = Thread(target=zzw) #40.1662917137146
# p.start()
l.append(p)
for i in l:
i.join()
print(time.time()-start_time)
从以上时间计算来看,很明显发现计算密集型中,多进程效率高于多线程
二、代码验证-IO密集型
import os
import time
from threading import Thread
from multiprocessing import Process
def zzw():
for i in range(1,100):
time.sleep(0.1)
if __name__ == '__main__':
l = []
print(os.cpu_count()) # 获取当前计算机CPU个数
start_time = time.time()
for i in range(8):
# p = Process(target=zzw) # 10.973128318786621
# p.start()
# p = Thread(target=zzw) # 10.865826606750488
# p.start()
l.append(p)
for i in l:
i.join()
print(time.time()-start_time)
从以上时间计算来看,很明显发现IO密集型中,多线程效率高于多进程
三、总结
'''
多进程和多线程都有各自的优势
并且我们在编写项目时通常可以 多进程下再开多线程
这样既可以利用多核也可以减少资源消耗
'''

浙公网安备 33010602011771号