# -*- coding:utf-8 -*-
# Author='长孤秋落' '2024/1/28'
# 博客:https://blog.csdn.net/weixin_36928396?type=blog
# may the odds be ever in your favor
import psutil
import time
import gc
version = '1.0.1.0'
def get_execution_time(func, *args, **kwargs):
start_time = time.time()
tmpresult = func(*args, **kwargs)
end_time = time.time()
exec_time = end_time-start_time
result = {'exec_time':exec_time, 'result':tmpresult}
return result
def get_memory_usage(func, *args, **kwargs):
process = psutil.Process()
before_mem = process.memory_info().rss
tmpresult = func(*args, **kwargs)
after_mem = process.memory_info().rss
mem_use = abs(after_mem - before_mem)
gc.collect()
result = {'mem_use':mem_use, 'result':tmpresult}
return result
"""
get_memory_usage_ext:通过多次计算,取最大值胡方式获取较为稳定的内存用量
"""
def get_memory_usage_ext(func, *args, **kwargs):
max_mem_use = 0
for iIdx in range(9):
process = psutil.Process()
before_mem = process.memory_info().rss
tmpresult = func(*args, **kwargs)
after_mem = process.memory_info().rss
mem_use = abs(after_mem - before_mem)
gc.collect()
if mem_use > max_mem_use:
max_mem_use = mem_use
result = {'mem_use':max_mem_use, 'result':tmpresult}
return result
def get_executiontime_memoryusage(func, *args, **kwargs):
process = psutil.Process()
before_mem = process.memory_info().rss
start_time = time.time()
tmpresult = func(*args, **kwargs)
end_time = time.time()
after_mem = process.memory_info().rss
exec_time = end_time-start_time
mem_use = abs(after_mem - before_mem)
gc.collect()
result = {'exec_time':exec_time, 'mem_use':mem_use, 'result':tmpresult}
return result
"""
get_executiontime_memoryusage_ext:通过多次计算,取最大值胡方式获取较为稳定的用时和内存用量
"""
def get_executiontime_memoryusage_ext(func, *args, **kwargs):
sum_exec_time, max_mem_use = 0, 0
for iIdx in range(9):
process = psutil.Process()
before_mem = process.memory_info().rss
start_time = time.time()
tmpresult = func(*args, **kwargs)
end_time = time.time()
after_mem = process.memory_info().rss
exec_time = end_time-start_time
mem_use = abs(after_mem - before_mem)
gc.collect()
sum_exec_time += exec_time
if mem_use > max_mem_use:
max_mem_use = mem_use
exec_time = sum_exec_time / 9
result = {'exec_time':exec_time, 'mem_use':max_mem_use, 'result':tmpresult}
return result
"""
getTimeStr:调用函数,获取用时信息, 单位毫秒(ms)
"""
def getTimeStr(func, *args, **kwargs):
result = get_execution_time(func, *args, **kwargs)
result['msg'] = f'函数 {func.__name__} 的运行时间为 {result["exec_time"]*1000:.6f} ms'
return result
#
"""
getMemoryStr:调用函数,获取内存信息, 单位KB
"""
def getMemoryStr(func, *args, **kwargs):
result = get_memory_usage(func, *args, **kwargs)
result['msg'] = f'函数 {func.__name__} 的内存使用量为 {result["mem_use"]/1024:.2f} KB'
return result
"""
getMemoryStrExt:调用函数9次,获取最大内存信息, 单位KB
"""
def getMemoryStrExt(func, *args, **kwargs):
result = get_memory_usage_ext(func, *args, **kwargs)
result['msg'] = f'函数 {func.__name__} 的内存使用量为 {result["mem_use"]/1024:.2f} KB'
return result
"""
getTimeMemoryStr:调用函数,获取用时和内存信息, 单位毫秒(ms)、KB
"""
def getTimeMemoryStr(func, *args, **kwargs):
result = get_executiontime_memoryusage(func, *args, **kwargs)
result['msg'] = f'函数 {func.__name__} 的运行时间为 {result["exec_time"]*1000:.2f} ms;内存使用量为 {result["mem_use"]/1024:.2f} KB'
return result
"""
getTimeMemoryStrExt:调用函数9次,获取平均用时和最大内存信息, 单位毫秒(ms)、KB
"""
def getTimeMemoryStrExt(func, *args, **kwargs):
result = get_executiontime_memoryusage_ext(func, *args, **kwargs)
result['msg'] = f'函数 {func.__name__} 的运行时间为 {result["exec_time"]*1000:.2f} ms;内存使用量为 {result["mem_use"]/1024:.2f} KB'
return result
# 测试函数1
def test1(icount = 10):
a = [i for i in range(icount ** 6)]
b = [j for j in range(icount ** 7)]
return sum([x + y for x, y in zip(a, b)])
# 测试函数2
def test2(icount, jcount):
a = [i for i in range(icount ** 7)]
b = [j for j in range(jcount ** 7)]
return sum([x + y for x, y in zip(a, b)])
if __name__ == '__main__':
print('CheckFuncPerf.py')
# 以下是调用示例
print(getTimeStr(test1))
print(getTimeStr(test2, 8, 9)['msg'])
print(getMemoryStr(test2, 8, 9)['msg'])
print(getMemoryStrExt(test1, 8)['msg'])
print(getTimeMemoryStr(test1, 8)['msg'])
print(getTimeMemoryStrExt(test2, 8, 9)['msg'])
result = getTimeMemoryStr(test1, 8)
print(result['msg'], '执行结果 = {}'.format(result['result']))
result = getTimeMemoryStr(test2, 8, 9)
print(result['msg'], '执行结果 = {}'.format(result['result']))
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
力扣热题Python源代码 题目34. 在排序数组中查找元素的第一个和最后一个位置 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。 示例 1: 输入:nums = [5,7,7,8,8,10], target = 8 输出:[3,4] 示例 2: 输入:nums = [5,7,7,8,8,10], target = 6 输出:[-1,-1] 示例 3: 输入:nums = [], target = 0 输出:[-1,-1] 提示: 0 <= nums.length <= 105 -109 <= nums[i] <= 109 nums 是一个非递减数组 -109 <= target <= 109
资源推荐
资源详情
资源评论
收起资源包目录
Python算法题集_在排序数组中查找元素的第一个和最后一个位置.zip (2个子文件)
Hot65_searchRange.py 4KB
CheckFuncPerf.py 5KB
共 2 条
- 1
资源评论
长孤秋落
- 粉丝: 2206
- 资源: 27
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功