|
|
|
|
import time
|
|
|
|
|
import psutil
|
|
|
|
|
import tracemalloc
|
|
|
|
|
import requests
|
|
|
|
|
import aiohttp
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def compute_task():
|
|
|
|
|
start_time = time.time()
|
|
|
|
|
result = sum(i * i for i in range(10**7))
|
|
|
|
|
end_time = time.time()
|
|
|
|
|
print(f"compute_task耗时:{end_time - start_time}秒")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async def async_compute_task():
|
|
|
|
|
start_time = time.time()
|
|
|
|
|
result = sum(i * i for i in range(10**7))
|
|
|
|
|
end_time = time.time()
|
|
|
|
|
print(f"async_compute_task耗时:{end_time - start_time}秒")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def measure_performance(func):
|
|
|
|
|
|
|
|
|
|
def wrapper(*args, **kwargs):
|
|
|
|
|
print(f"开始运行{func.__name__}")
|
|
|
|
|
|
|
|
|
|
time.sleep(30)
|
|
|
|
|
print(f"运行前的CPU使用率:{psutil.cpu_percent()}%")
|
|
|
|
|
print(f"运行前的内存使用率:{psutil.virtual_memory().percent}%")
|
|
|
|
|
print()
|
|
|
|
|
|
|
|
|
|
tracemalloc.start()
|
|
|
|
|
start_time = time.time()
|
|
|
|
|
func(*args, **kwargs)
|
|
|
|
|
end_time = time.time()
|
|
|
|
|
current, peak = tracemalloc.get_traced_memory()
|
|
|
|
|
tracemalloc.stop()
|
|
|
|
|
print(f"{func.__name__}耗时:{end_time - start_time}秒")
|
|
|
|
|
print(f"当前内存使用:{current / 10**6}MB, 峰值内存使用:{peak / 10**6}MB")
|
|
|
|
|
print(f"CPU使用率:{psutil.cpu_percent(interval=1)}%")
|
|
|
|
|
print(f"内存使用率:{psutil.virtual_memory().percent}%")
|
|
|
|
|
print()
|
|
|
|
|
|
|
|
|
|
time.sleep(30)
|
|
|
|
|
print(f"运行结束30秒后的CPU使用率:{psutil.cpu_percent()}%")
|
|
|
|
|
print(f"运行结束30秒后的内存使用率:{psutil.virtual_memory().percent}%")
|
|
|
|
|
print(f"运行结束{func.__name__}结束")
|
|
|
|
|
print()
|
|
|
|
|
|
|
|
|
|
return wrapper
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def measure_performance_async(func):
|
|
|
|
|
|
|
|
|
|
async def wrapper(*args, **kwargs):
|
|
|
|
|
print(f"开始运行{func.__name__}")
|
|
|
|
|
|
|
|
|
|
time.sleep(30)
|
|
|
|
|
print(f"运行前的CPU使用率:{psutil.cpu_percent()}%")
|
|
|
|
|
print(f"运行前的内存使用率:{psutil.virtual_memory().percent}%")
|
|
|
|
|
print()
|
|
|
|
|
|
|
|
|
|
tracemalloc.start()
|
|
|
|
|
start_time = time.time()
|
|
|
|
|
await func(*args, **kwargs)
|
|
|
|
|
end_time = time.time()
|
|
|
|
|
current, peak = tracemalloc.get_traced_memory()
|
|
|
|
|
tracemalloc.stop()
|
|
|
|
|
print(f"{func.__name__}耗时:{end_time - start_time}秒")
|
|
|
|
|
print(f"当前内存使用:{current / 10**6}MB, 峰值内存使用:{peak / 10**6}MB")
|
|
|
|
|
print(f"CPU使用率:{psutil.cpu_percent(interval=1)}%")
|
|
|
|
|
print(f"内存使用率:{psutil.virtual_memory().percent}%")
|
|
|
|
|
print()
|
|
|
|
|
|
|
|
|
|
time.sleep(30)
|
|
|
|
|
print(f"运行结束30秒后的CPU使用率:{psutil.cpu_percent()}%")
|
|
|
|
|
print(f"运行结束30秒后的内存使用率:{psutil.virtual_memory().percent}%")
|
|
|
|
|
|
|
|
|
|
return wrapper
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def fetch_url(url):
|
|
|
|
|
response = requests.get(url)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async def fetch_url_async(url):
|
|
|
|
|
async with aiohttp.ClientSession() as session:
|
|
|
|
|
async with session.get(url, ssl=False) as response:
|
|
|
|
|
await response.read()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
urls = [
|
|
|
|
|
"https://www.baidu.com", "https://www.qq.com", "https://www.taobao.com",
|
|
|
|
|
"https://www.tmall.com", "https://www.jd.com", "https://www.sina.com.cn",
|
|
|
|
|
"https://www.weibo.com", "https://www.163.com", "https://www.sohu.com",
|
|
|
|
|
"https://www.ifeng.com", "https://www.alipay.com", "https://www.youku.com",
|
|
|
|
|
"https://www.iqiyi.com", "https://www.tudou.com", "https://www.douyin.com",
|
|
|
|
|
"https://www.meituan.com", "https://www.xiaomi.com",
|
|
|
|
|
"https://www.oppo.com", "https://www.vivo.com", "https://www.dianping.com",
|
|
|
|
|
"https://www.autohome.com.cn", "https://www.hupu.com",
|
|
|
|
|
"https://www.xinhuanet.com", "https://www.chinadaily.com.cn",
|
|
|
|
|
"https://www.people.com.cn", "https://www.cctv.com", "https://www.cntv.cn",
|
|
|
|
|
"https://www.zol.com.cn", "https://www.pconline.com.cn",
|
|
|
|
|
"https://www.techweb.com.cn", "https://www.cs.com.cn",
|
|
|
|
|
"https://www.eastmoney.com", "https://www.hexun.com",
|
|
|
|
|
"https://www.yicai.com", "https://www.21jingji.com"
|
|
|
|
|
]
|