python基础知识

本文探讨了Python中列表与数组在类型、性能、索引操作上的差异,以及Torch库中reshape与view函数的内存管理特性。同时,介绍了如何在Python中检测和解决内存泄漏问题。
摘要由CSDN通过智能技术生成

一、目录

  1. python中列表与数组的区别
  2. torch 的reshape与view的区别
  3. python 如何解决内存泄漏

二、实现

  1. python中列表与数组的区别

类型和内部实现:列表是动态数组,它可以在运行时改变大小,并可以包含不同类型的元素。数组则是静态的,其大小在创建时就已经固定,且所有元素必须是相同类型。
列表在Python中是动态数据结构,因此操作可能会比数组慢,因为它们需要进行内存分配或释放。数组因为其固定的内存布局通常在内存操作方面具有更好的性能。
索引和切片操作:数组的索引和切片操作通常比列表更高效,因为数组是连续的内存块。
数组切片:数组没有像列表那样的切片操作,因此对于数组,你只能通过索引或者其他方式访问元素。
运算方式不一样:数组可以进行四则运算,列表只能使用加号进行拼接,拼接之后形成一个新的列表。
2. torch 的reshape与view的区别

view() 函数使tensor 的shape 发生改变,但返回的tensor 与原tensor 共享内存,即指针指向同一存储空间; 所以view() 函数使tensor 发生改变时,需要原tensor存储必须连续。
view() 不满足连续性条件时,需要先contiguous()方法将原始tensor转换为满足连续条件的tensor.
reshape() 不需要满足连续性条件。返回的tensor与原tensor 不共享内存。
连续性条件:stride[i]=stride[i+1]*size[i+1]

  1. python 如何解决内存泄漏
    查看内存泄漏篇
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值