首页 > 系统相关 >python学习总结之内存处理

python学习总结之内存处理

时间:2024-09-07 16:52:50浏览次数:9  
标签:总结 sys getrefcount python parse 参数 内存 print import


1.引用计数法

python学习总结之内存处理_java

注:类似于java,这个系统自动回收垃圾对象,明显有循环引用的弊端。

python学习总结之内存处理_java_02

  • 代码例子
import sys
import psutil
import os
import gc

print(gc.get_threshold())
def showMemSize(tag):
    pid=os.getpid()
    p=psutil.Process(pid)
    info=p.memory_full_info()
    memory=info.uss/1024/1024
    print('{} memory used:{} MB'.format(tag,memory))
    pass

# 验证循环引用的情况
def func():
    showMemSize('初始化')
    a=[i for i in range(10000000)]
    b=[i for i in range(10000000)]
    a.append(b)
    b.append(a)
    showMemSize('创建列表对象 a b 之后')
    # print(sys.getrefcount(a))
    # print(sys.getrefcount(b))
    # del a
    # del b
    pass

func()
gc.collect() #手动是释放的
showMemSize('完成时候的')
# sys.getrefcount()
# a=[]
# print(sys.getrefcount(a)) #两次
# b=a
# print(sys.getrefcount(a)) #三次
# c=b
# d=b
# e=c
# f=e
# g=d
# print(sys.getrefcount(a)) #八次

2.标记清除、分代收集算法

  • 标记清楚:先标记对象,然后清除垃圾(java的可达性分析)

3.小整数和大整数对象池(内存优化)

  • 类似于java的字符串常量池
  • 大整数池和小整数池的区别是:1 从结果来看是一样的 2 大整数池是没有提前的创建好对象,是个空池子,需要我们自己去创建,创建好之后,会把整数对象保存到池子里面,后面都不需要再创建了 直接拿来使用;小整数池是提前将【-5,256】的数据都提前创建好; 字符串的驻留共享机制intern机制
a=140
b=140
print(id(a))
print(id(a))
# del a
# del b
# c=140
# print(id(c))
# biga=100000
# bigb=100000
# print(id(biga))
# print(id(bigb))
# del biga
# del bigb
# bigc=100000
# print(id(bigc))
# sa='ab_c'
# sb='ab_c'
# sc='ab_c'
# sd='ab_c'

4.规范

  • 缩进:4个空格的缩进
  • 添加注释
  • 命名规范:类--大驼峰法,方法--小驼峰法

5.命令行参数_sys

  • sys模块
import sys
import argparse
print('参数个数为:', len(sys.argv), '个参数.')
print('参数列表:', str(sys.argv[1:]))
  • 执行结果
  • python学习总结之内存处理_循环引用_03

  • 弊端:
  • python学习总结之内存处理_循环引用_04

6.命令行参数_argparse

  • argparse为首选
# 创建一个解析器对象
parse=argparse.ArgumentParser(prog='my - 我自己的程序', usage='%(prog)s [options] usage',
                              description = 'my-编写自定义命令行的文件',epilog = 'my - epilog')

# 添加位置参数【必选参数】
parse.add_argument('name',type=str, help='你自己的名字')
parse.add_argument('age',type=str,help='你的年龄')

# 添加可选参数
# parse.add_argument('-s','--sex', action='append',type=str,help='你的性别')
# 限定一个范围
parse.add_argument('-s','--sex',default='男', choices=['男','femal','女','male'],type=str,help='你的性别')
# print(parse.print_help())

result=parse.parse_args() #开始解析参数
print(result.name,result.age,result.sex)
  • 构造对象的参数说明
  • python学习总结之内存处理_java_05

  • 参数的属性
  • python学习总结之内存处理_循环引用_06

标签:总结,sys,getrefcount,python,parse,参数,内存,print,import
From: https://blog.51cto.com/u_12518291/11945335

相关文章

  • Python数学建模算法与应用例题
    2.21.aggcacggaaaaacgggaataacggaggaggacttggcacggcattacacggagg2.cggaggacaaacgggatggcggtattggaggtggcggactgttcgggga3.gggacggatacggattctggccacggacggaaaggaggacacggcggacataca4.atggataacggaaacaaaccagacaaacttcggtagaaatacagaagctta5.cggctggcggacaacggactggcggatt......
  • Python中差分进化differential_evolution的调用及参数说明
    在场景应用中,要求我们的函数计算结果尽可能的逼近实际测量结果,可转化计算结果与测量结果的残差,通过最小化残差,便可求出最优的结果。但使用最小二乘等方法来计算时,常常会使迭代的结果显然局部最优点而导致结算错误。差分进化原理差分进化(DifferentialEvolution,DE)是一种基......
  • 分享10个免费的Python代码仓库,轻松实现办公自动化!
    为了帮助大家更好地利用Python实现自动化办公,我们精心挑选了10个免费的Python代码仓库。这些仓库不仅包含了实用的脚本和示例,还涵盖了从基础到进阶的各种自动化任务解决方案。无论你是Python编程的初学者,还是希望提升工作效率的职场人士,都能在这些仓库中找到适合自己的资......
  • Python毕业设计基于Django的动漫漫画手办周边商城
    文末获取资源,收藏关注不迷路文章目录一、项目介绍二、主要使用技术三、研究内容四、核心代码五、文章目录一、项目介绍动漫周边商城分为二个模块,分别是管理员功能模块和用户功能模块。管理员功能模块包括:文章资讯、文章类型、动漫活动、动漫商品功能,用户功能模块......
  • 【Python 千题 —— 基础篇】敏感词处理
    Python千题持续更新中……脑图地址......
  • Python爬取下载m3u8加密视频,原来这么简单!
    本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。爬取视频的时候发现,现在的视频都是经过加密(m3u8),不再是mp4或者avi链接直接在网页显示,都是经过加密形成ts文件分段进行播放。今天就教大家如何通过python爬取下载m3u8加密......
  • [Python之代码爬虫] -爬取披头士乐队历年专辑封面-网易云音乐
    一、前言前文说过我的设计师小伙伴的设计需求,他想做一个披头士乐队历年专辑的瀑布图。通过搜索,发现网易云音乐上有比较全的历年专辑信息加配图,图片质量还可以,虽然有大有小。我的例子怎么都是爬取图片?(谁让你总是跟设计师小伙伴一起玩耍。。。)看来图片对于设计师来说还是有着......
  • Python windows虚拟环境离线安装依赖
    前提需要一台有网的机器下载whl包能够拷贝到离线机器创建虚拟环境安装虚拟环境之前,需要你本地有一套python环境。比如我本地python环境:创建虚拟环境命令:python-mvenvmyvenv创建成功后会生成myvenv目录,并且有Scripts文件夹(这里存放的就是虚拟环境的python解释器,pychr......
  • # 结构体成员定义的顺序也会影响结构体的大小,内存对齐,内存填充
    结构体成员定义的顺序也会影响结构体的大小,内存对齐,内存填充usingSystem;usingSystem.Runtime.InteropServices;structStrcutOne{publicintb;//4bytespublicbytea;//1publicbytec;//1//4+1+1+2(在填充两个2个字节)=8字节}struct......
  • Python贝叶斯卷积神经网络BCNN分类胸部X光图像数据集实例
    分析师:YuanchunNiu在人工智能的诸多领域中,分类技术扮演着核心角色,其应用广泛而深远。无论是在金融风险评估、医疗诊断、安全监控还是日常的交互式服务中,有效的分类算法都是实现智能决策的关键。随着大数据时代的到来,分类算法面临着前所未有的挑战和机遇。一方面,海量的数据为算法提......