python编译环境对cpu要求高不高_Python 不同CPU核数对运行多进程和多线程的影响...

本文将通过腾讯云和阿里云上的服务器运行多进程和多线程实例来比较,不同CPU数量对多进程和多线程的影响

测试环境如下:服务器T:4核8G

服务器A:1核2G

测试一:计算密集型任务-多进程

采用如下的测试程序:

from multiprocessing import Process

import os, time

#计算密集型任务

def work():

res = 0

for i in range(100000000):

res *= i

if __name__ == "__main__":

l = []

print("本机为服务器T",os.cpu_count(),"核 CPU") # 本机为4核

start = time.time()

for i in range(4):

p = Process(target=work) # 多进程

l.append(p)

p.start()

for p in l:

p.join()

stop = time.time()

print("计算密集型任务,多进程耗时%s" % (stop - start))

测试结果如下:

服务器T的结果:

本机为服务器T 4 核 CPU

计算密集型任务,多进程耗时 5.148967981338501

服务器A的结果:

本机为服务器A 1 核 CPU

计算密集型任务,多进程耗时 25.826696395874023

测试二:计算密集型任务-多线程

采用如下的测试程序:

from threading import Thread

import os, time

#计算密集型任务

def work():

res = 0

for i in range(100000000):

res *= i

if __name__ == "__main__":

l = []

print("本机为",os.cpu_count(),"核 CPU") # 本机为4核

start = time.time()

for i in range(4):

p = Thread(target=work) # 多线程

l.append(p)

p.start()

for p in l:

p.join()

stop = time.time()

print("计算密集型任务,多线程耗时 %s" % (stop - start))

服务器T的测试结果:

本机为 4 核 CPU

计算密集型任务,多线程耗时 20.67013120651245

服务器A的测试结果:

本机为 1 核 CPU

计算密集型任务,多线程耗时 26.10865044593811

测试三:I/O 密集型任务-多进程

采用测试程序如下:

from multiprocessing import Process

import os, time

#I/0密集型任务

def work():

time.sleep(2)

print("===>", file=open("tmp.txt", "w"))

if __name__ == "__main__":

l = []

print("本机为", os.cpu_count(), "核 CPU") # 本机为4核

start = time.time()

for i in range(400):

p = Process(target=work) # 多进程

l.append(p)

p.start()

for p in l:

p.join()

stop = time.time()

print("I/0密集型任务,多进程耗时 %s" % (stop - start))

服务器T的测试结果如下:

本机为 4 核 CPU

I/0密集型任务,多进程耗时 3.7599596977233887

服务器A的测试结果如下:

本机为 1 核 CPU

I/0密集型任务,多进程耗时 7.217377424240112

测试四:I/O 密集型任务-多线程

采用测试程序如下:

from threading import Thread

import os, time

#I/0密集型任务

def work():

time.sleep(2)

print("===>", file=open("tmp.txt", "w"))

if __name__ == "__main__":

l = []

print("本机为", os.cpu_count(), "核 CPU") # 本机为4核

start = time.time()

for i in range(400):

p = Thread(target=work) # 多线程

l.append(p)

p.start()

for p in l:

p.join()

stop = time.time()

print("I/0密集型任务,多线程耗时 %s" % (stop - start))

服务器T的测试结果:

本机为 4 核 CPU

I/0密集型任务,多线程耗时 2.084625482559204

服务器A的测试结果:

本机为 1 核 CPU

I/0密集型任务,多线程耗时 2.3506829738616943

测试结果分析

equation?tex=%5Cbegin%7Barray%7D%5Bb%5D+%7B%7Cc%7Cc%7C%7D++%5Chline+%E6%9C%8D%E5%8A%A1%E5%99%A8%26+%E5%AF%86%E9%9B%86%E8%AE%A1%E7%AE%97%E5%A4%9A%E8%BF%9B%E7%A8%8B%26+%E5%AF%86%E9%9B%86%E8%AE%A1%E7%AE%97%E5%A4%9A%E7%BA%BF%E7%A8%8B%26I%2FO%E5%AF%86%E9%9B%86%E5%9E%8B%E4%BB%BB%E5%8A%A1%E5%A4%9A%E8%BF%9B%E7%A8%8B%26I%2FO%E5%AF%86%E9%9B%86%E5%9E%8B%E4%BB%BB%E5%8A%A1%E5%A4%9A%E7%BA%BF%E7%A8%8B%5C%5C++%5Chline+T++%26+5.15+%26+20.67%263.76%262.08++%5C%5C++%5Chline+A++%26+25.83%26+26.11%267.23%262.35++%5C%5C+++%5Chline+%5Cend%7Barray%7D%5C%5C

服务器T: 4核8G

服务器A: 1核2G

1、对于密集计算类型,多核CPU采取多进程方式优势明显,采取多线程方式多核CPU和单核CPU有差别,但没有多进程方式的差别明显;

2、对于I\O密集型,多线程方式比多进程方式速度更快,但与多核CPU和单核CPU的差别并不明显

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值