# -*- 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源代码 题目78. 子集 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1: 输入:nums = [1,2,3] 输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]] 示例 2: 输入:nums = [0] 输出:[[],[0]] 提示: 1 <= nums.length <= 10 -10 <= nums[i] <= 10 nums 中的所有元素 互不相同
资源推荐
资源详情
资源评论
收起资源包目录
Python算法题集_子集.zip (2个子文件)
Hot56_subsets.py 3KB
CheckFuncPerf.py 5KB
共 2 条
- 1
资源评论
长孤秋落
- 粉丝: 2206
- 资源: 27
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功