Python 3.11.7 进程、线程速度对比

Python 3.11.7 进程、线程速度对比

当前使用版本为 Python 3.11.7
在这里插入图片描述

1.进程 处理(无数据保护)

#进程速度
from multiprocessing import Process
import time

n = 0 

def task1():
    global n
    for i in range(100_000_000):
        n += 1
    print("-->task1中的n值是-《{:,}》-".format(n))
def task2():
    global n
    for i in range(100_000_000):
        n += 1
    print("-->task2中的n值是-《{:,}》-".format(n))
if __name__ == "__main__":
    process1 = Process(target=task1, )
    process2 = Process(target=task2, )
    
    t1 = time.time()
    process1.start()
    process2.start()

    
    process1.join()
    process2.join()
    t2 = time.time()
    t3 = t2-t1
    print("最终数字为",n, "时间为", t3,"秒")
    
# 最终数字为 0 时间为 7.642554998397827 秒
# -->task2中的n值是-《100,000,000》-
# -->task1中的n值是-《100,000,000》-

结果为:7.6秒
在这里插入图片描述

2.线程 处理

from threading import Thread
import time

n = 0

def task1():
    global n
    for i in range(100_000_000):
        n += 1
    print("-->task1中的n值是-《{:,}》-".format(n))
def task2():
    global n
    for i in range(100_000_000):
        n += 1
    print("-->task2中的n值是-《{:,}》-".format(n))
        
if __name__ == "__main__":
    thread1 = Thread(target=task1, )
    thread2 = Thread(target=task2, )

    t1 = time.time()
    thread1.start()
    thread2.start()

    
    thread1.join()
    thread2.join()
    t2 = time.time()
    t3 = t2-t
    print("最终数字为",n, "时间为", t3,"秒")
    
#-->task1中的n值是-《199,553,915》-
#-->task2中的n值是-《200,000,000》-
#最终数字为 200000000 时间为 14.593790292739868 秒

结果为:14.6秒,
在这里插入图片描述

3.单线程 速度

import time
n = 0 

def task1():
    global n
    for i in range(200_000_000):
        n += 1
    print("-->task1中的n值是-《{:,}》-".format(n))

t1 = time.time()
task1()
t2 = time.time()
t3 = t2-t1
print("最终数字为",n, "时间为", t3,"秒")

# -->task1中的n值是-《200,000,000》-
# 最终数字为 200000000 时间为 14.337766170501709 秒

结果为:14.34秒
在这里插入图片描述

4.双线程各自跑

from multiprocessing import Process
from threading import Thread
import time

def task1():
    n=0
    for i in range(100_000_000):
        n += 1
    print("-->task1中的n值是-《{:,}》-".format(n))
def task2():
    n=0
    for i in range(100_000_000):
        n += 1
    print("-->task2中的n值是-《{:,}》-".format(n))
        
if __name__ == "__main__":
    thread1 = Thread(target=task1, )
    thread2 = Thread(target=task2, )

    t1 = time.time()
    thread1.start()
    thread2.start()

    
    thread1.join()
    thread2.join()
    t2 = time.time()
    t3 = t2-t1
    print("最终时间为", t3,"秒")

# -->task1中的n值是-《100,000,000》-
# -->task2中的n值是-《100,000,000》-
# 最终时间为 9.990402936935425 秒

结果为:9.99秒
在这里插入图片描述

序号项目时间(s)
1进程 处理(无数据保护)7.6
2线程 处理14.6
3单线程 速度14.34
4双线程各自跑9.99

总结

从表格中,可以看到:
1、双线程同时处理一份数据的时间用时最久,比单线程处理的时间还要长,是两个进程用时的两倍
2、两个进程处理的速度最快(但是没有进行数据保护)。
3、两个线程的各自处理数据的时候时间比两个进程时间稍慢,低24%。

因此计算密集型的不建议用多线程操作,都资源浪费在切换上了,单线程即可。

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值