八、同进程下多线程无法利用多核优势

同进程下多线程无法利用多核优势

"""
多线程是否有用要看具体情况
单核:四个任务(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密集型中,多线程效率高于多进程

三、总结

'''
多进程和多线程都有各自的优势
并且我们在编写项目时通常可以 多进程下再开多线程
这样既可以利用多核也可以减少资源消耗
'''
posted @ 2021-06-03 21:36  zzwYYYYYY  阅读(165)  评论(0)    收藏  举报