
python
文章平均质量分 84
木子林_
博客是用来做笔记的
展开
-
简单说说python垃圾回收机制
前言现在高级语言如python, java等,都采用了垃圾收集机制,而不再是像c用户自己需要管理维护内存的方式。自己管理内存极其自由,可以任意申请内存,但如同一把双刃剑,为大量内存泄露,悬空指针等bug埋下隐患。对于一个字符串、列表、类甚至数值都是对象,且定位简单易用的语言,自然不会让用户去处理如何分配回收内存的问题。python采用的是引用计数机制为主,标记-清除和 分代回收两种机制为辅的策略。再说垃圾回收机制前,先和大家一起先了解下什么是内存泄漏内存泄漏内存泄漏是由于开发人员的...原创 2021-04-11 21:30:38 · 531 阅读 · 0 评论 -
python字符串
什么是字符串由独立字符组成的一个序列,一般使用单引号('')双引号("")或者三引号(''' '''或""" """)包围。字符串的内容可以包含字母、标点、特殊符号、中文、日文等全世界的所有文字。auther = '林小贱'reader = '帅气的读者'注意:相同的引号不能使用多个一起使用,比如 a = ' '123' ' 或 a = " "123" ",如果我们字符串需要带引号,我们可以使用用反斜杠\ 进行转义。a = '\'123\''print("a", a)# 输...原创 2021-03-21 22:00:44 · 779 阅读 · 2 评论 -
python集合(set)
前言我们前面深入了解了字典,列表和元组,对这三个数据类型有了认识,今天我们了解下另外一种数据类型:集合。集合用来保存不重复的元素,即集合中的元素都是唯一的,元素只能是不可变的数据类型(包括整形、浮点型、字符串、元组),无法存储可变的数据类型(列表、字典、集合)。...原创 2021-03-16 21:19:55 · 1395 阅读 · 3 评论 -
python列表(list)和元组(tuple)详解
前言实际开发中时候,经常需要将一组数据存储起来,以便使用。如果学习了其他的语言可能知道数组(Array)这个数据结构,它就可以把多个数据挨个存储到一起,通过数组下标可以访问数组中的每个元素。python中没有数组,但是提供了更加灵活的列表(list)和元组(tuple)。列表初始化a = list()b = []# 可以通过range快速创建listc = list(range(1,6))print("a:", a)print("b:", b)print("c:", c)#原创 2021-03-13 15:04:19 · 20290 阅读 · 24 评论 -
python处理大文本---mmap模块
前言如果现在有一个需求,我们需要处理一个20G的大文件,我们会怎么处理呢?我们先暂定下来自己思考下,我们需要怎么实现这个功能。------------------------------------------------------------------------放上我的老婆大人------------------------------------------------------------------------我们可能会这么实现def get_datas():原创 2021-03-11 17:00:52 · 3415 阅读 · 0 评论 -
巧用python上下文管理器
前言首先问下帅气的读者们,当你们需要访问一个文件时候,你们是用什么方式访问的,是open吗?如果是,那么你们有没有觉得每次都需要 ‘手动’ 关闭很麻烦或则忘记关闭很麻烦。今天我们带大家来认识python一个新的魔法---上文管理器。如果你知道那么不要急着走开,自己心里默默的问自己是不是可以回答以下几个问题:上下文管理器是什么? 上下文管理器怎么实现,你是否有多种方式来实现呢? 为什么要用上下文管理器?上下文管理器是什么语法首先我们先简单的看一段使用上下文管理器的代码:with o原创 2021-03-10 23:09:24 · 1413 阅读 · 11 评论 -
pyecharts不能导入Bar的问题解决
前言今天用pyecharts画图的时候,发现 from pyecharts import Bar 失败,直接报错cannot import name 'Bar'解决方法1- 导入改为from pyecharts.charts import Bar, 但是发现和 from pyecharts import Bar 导入的方法不一样,所以再去查询了别的了2- 社区发现有人通过 pip install pyecharts-snapshot 来进行解决,结果发现对我来说没有用3- 通过更...原创 2021-03-08 17:28:57 · 3413 阅读 · 1 评论 -
django源码解读: setting懒加载
前言上次我们了解了django启动原理,细心的朋友可能发现django中的setting配置文件加载时懒加载,接下来我们了解下setting的懒加载懒加载我们从manager.py进入management/__init__.py,我们可以看到导入有这个from django.conf import settings,我们进入setting后就可以看到懒加载源码class LazySettings(LazyObject): """ 全局Django设置或自定义设置对象的惰性代原创 2021-01-24 14:56:48 · 1820 阅读 · 8 评论 -
supervisor使用教程(django例子)
前言Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警。supervisor还提供了一个功能,可以为supervisord或者每个子进程,设原创 2021-01-23 19:42:43 · 2732 阅读 · 8 评论 -
python时间处理模块(calendar,time,datetime,arrow)
前言时间我们平常大部分都接触到,在生活上早上七点五十起床,七点五十就是时间;在开发中我们有时候对某些操作需要记录时间,新增操作时间字段,这又涉及到了时间。接下来我们简单对python的时间处理进行简单的总结。在工作中我们大部分用time或者datetime函数进行时间处理,今天我就总结这两模块外,再新增calendar,arrow这两位成员,好啦下面我们开始讲解。timetime模块是涉及到时间功能中最常用的一个模块,在开发中我们使用很频繁的一个模块。time返回当前时间的时间.原创 2021-01-18 13:24:01 · 1526 阅读 · 2 评论 -
django源码解读:项目启动流程
启动代码流程1- 先看下manager.pydef main(): "Run administrative tasks.""" # set djangoStu.settings become django of run env # 将settings模块设置到环境变量中 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'djangoStu.settings') try: from dj...原创 2021-01-11 09:36:35 · 3448 阅读 · 8 评论 -
python缓存机制与functools.lru_cache
前言前阵子看了下django源码,在看到get_commads()方法时,看到了使用functools.lru_cache装饰器来实现缓存,现在我们简单讲解下。概述缓存是一种将定量数据加以保存以备迎合后续获取需求的处理方式,旨在加快数据获取的速度。数据的生成过程可能需要经过计算,规整,远程获取等操作,如果是同一份数据需要多次使用,每次都重新生成会大大浪费时间。所以,如果将计算或者远程请求等操作获得的数据缓存下来,会加快后续的数据获取需求。简单例子import timefrom fun原创 2021-01-11 09:36:09 · 3246 阅读 · 0 评论 -
python监控文件变化-----watchdog
前言前些日子用了pyinotify来实现文件的监听,现在我们通过watchdog来实现下监听文件的变化。pyinotify依赖与Linux平台的inotify,watchdog对不同平台的事件都进行了封装。所以学好watchdog我们就不怕平台的切换导致模块不能使用了。类型events(watchdog.events.FileSystemEvent)当受监视的文件系统发生更改时,不可变类型的文件系统将会被触发;所有FileSystemEvent对象都必须是不可变的,因此可以...原创 2020-12-21 21:51:30 · 7320 阅读 · 4 评论 -
python监控文件变化-----pyinotify
概述Pyinotify可以用来监测文件系统的变化, 它依赖于Linux内核的功能—inotify(内核2.6.13合并)。 inotify的是一个事件驱动的通知器,其通知接口通过三个系统调用从内核空间到用户空间。inotify有以下特点通知配置文件的改变 跟踪某些关键的系统文件的变化 监控某个分区磁盘的整体使用情况 系统崩溃时进行自动清理 自动触发备份进程 向服务器上传文件结束时发出通知安装# 方式一 pip install pyinotify# 方式二git clo原创 2020-12-18 21:10:03 · 4712 阅读 · 1 评论 -
django报错汇总
django启动报:'str' object has no attribute 'decode'解决: 146行将将decode修改成encode原创 2020-12-04 20:56:27 · 1260 阅读 · 2 评论 -
linux性能监控工具---bpytop介绍
工具安装git clone https://github.com/aristocratos/bpytop.gitcd bpytopsudo make install使用进入之后按下esc 键展示:Option:可以更改主题和各个参数help:说明QUIT:退出常用键说明o 进入选项页面m 切换mini模式和一般模式h 查看帮助.原创 2020-12-04 20:53:08 · 1487 阅读 · 1 评论 -
设计模式-----工厂模式(python版)
什么是工厂模式工厂模式又称多态工厂模式和虚拟构造器模式,通过已经定义的工厂父类负责定义创建对象的公共接口,而子类则负责生成具体的对象。大白话解释您需要一辆汽车,可以直接从工厂里面提货,而不用去管这辆汽车是怎么做出来的,以及这个汽车里面的具体实现。代码实现从上面说明来看可能还是不太清楚,下面我们用代码来一步一步的展现工厂模式。我们以写一个简单版的计算的代码来开始(只提供加减乘除的功能)一般新手都会按照如下的方式进行开发class Calculator(object):原创 2020-12-19 11:55:24 · 1191 阅读 · 2 评论 -
django使用uWSGI和nginx启动
前言python程序员一般在本地写代码时候,无论是用pycharm还是终端我们都是使用runserver启动来调试的,今天我们来了解下另外一种(线上部署)启动方式:通过uwsgi启动runserver:调试 Django 时经常用到的运行方式,它使用Django自带的WSGI Server 运行,主要在测试和开发中使用,并且 runserver 开启的方式也是单进程(多线程)uWSGI: Web服务器,它实现了WSGI协议、uwsgi、http 等协议。注意uwsgi是一种通信协议,而uWSG.原创 2020-11-30 09:08:51 · 2582 阅读 · 2 评论 -
设计模式---单例模式(java+python版本)
概念单例模式是指在内存中只会创建且仅创建一次对象的设计模式。在程序中多次使用同一个对象且作用相同时,为了防止频繁地创建对象使得内存飙升,单例模式可以让程序仅在内存中创建一个对象,让所有需要调用的地方都共享这一单例对象。类型饿汉式:在类加载时已经创建好该单例对象,等待被程序使用 懒汉式:在真正需要使用对象时才去创建该单例类对象 *枚举式: 与饿汉式一样在加载时已经创建,但可以防止反射构造对象和保护线程安全(此方法是:effactive java作者写的)代码实现饿汉式python原创 2020-11-28 20:42:20 · 1161 阅读 · 0 评论 -
python2和python3差异总结
项目马上就要由python2迁移到python3环境所有就简单总结下区别,个人觉得这些差不多,详情见如下吧原创 2020-11-14 20:07:18 · 3160 阅读 · 13 评论 -
浅析python迭代器和生成器
可迭代对象概念一个对象(在Python里面一切都是对象)只要实现了只要实现了__iter__()方法,那么这个对象就是可迭代对象常见的可迭代对象集合或序列类型(如list、tuple、set、dict、str)或文件对象 在类中定义了__iter__()方法的对象,可以被认为是 Iterable对象,但自定义的可迭代对象要能在for循环中正确使用,就需要保证__iter__()实现必须是正确的 在类中实现了如果只实现__getitem__()的对象可以通过iter()函数转化成迭代器但其原创 2020-10-02 10:44:49 · 1352 阅读 · 0 评论 -
python描述器介绍
1-定义和简介定义:从描述器的创建来说,一个类中定义了__get__、__set__、__delete__中的一个或几个,这个类的实例就可以叫做一个描述器。简介:描述器是一个强大而通用的协议。 它们是特征属性、方法静态方法、类方法和 super() 背后的实现机制。 它们在 Python 内部被广泛使用来实现自 2.2 版中引入的新式类。 描述器简化了底层的 C 代码并为 Python 的日常程序提供了一组灵活的新工具。...原创 2020-10-02 21:51:02 · 2070 阅读 · 6 评论 -
简单说说python单元测试框架---unittest
1-单元测试的概念单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。def demo(a,b): return a / b 假设我们有一个方法demo,对于这个方法我们可以简单的进行如下的单元测试:a , b为 4, 2我们期待输出2 a为1 , b为0,期待输出ZeroDivisionError a为字符串, b为字符串,则期待输出TypeError把上面的测试用例放到一个测试模块里,就是一个完整的单元测试。如果单元测试通过,说明我们测试的这个函数能够原创 2020-07-14 09:46:20 · 1372 阅读 · 0 评论 -
Python模块之heapq
该模块提供了堆排序算法的实现。堆是二叉树,最大堆中父节点大于或等于两个子节点,最小堆父节点小于或等于两个子节点。创建堆heapq有两种方式创建堆, 一种是使用一个空列表,然后使用heapq.heappush()函数把值加入堆中,另外一种就是使用heap.heapify(list)转换列表成为堆结构import heapq# 第一种"""函数定义:heapq.heappush(heap, item) - Push the value item onto the heap, ma转载 2020-06-11 23:06:19 · 1353 阅读 · 0 评论 -
一篇文章搞懂装饰器所有用法
目录01. 装饰器语法糖02. 入门用法:日志打印器03. 入门用法:时间计时器04. 进阶用法:带参数的函数装饰器05. 高阶用法:不带参数的类装饰器06. 高阶用法:带参数的类装饰器07. 使用偏函数与类实现装饰器08. 如何写能装饰类的装饰器?09. wraps 装饰器有啥用?10. 内置装饰器:property11. 其他装饰器:装饰器实战01. 装饰器语法糖如果你接触 Python 有一段时间了的话,想必你对@符号一定不陌生了,没错@符号...转载 2020-05-27 09:27:13 · 1459 阅读 · 0 评论 -
详解python-----字典
在python中字典是一种很重要的数据结构,我们都知道他查询的时间复杂度是O(1),我们工作中也会他的一些基本操作,今天我们就不讲操作,就简单讲一下他是怎么进行插入和获取的。有需要知道操作的可以去菜鸟教程观看 首先我们就说下字典是怎么进行插入的? 插入数据的位置一般取决于数据的两个属性:1-键的哈希值(散列值);2-该值与其他的值的比较。在我们插入数据...原创 2021-01-28 11:00:00 · 1701 阅读 · 0 评论 -
Python日志-使用loguru进行日志管理
最近发现python有个模块叫loguru,比自带的logging使用方便流畅的多了,下面就简单介绍下:安装loguru:pip install loguru简单实例: from loguru import logger logger.debug("hello world!")返回结果: 看到上面实例,你或许疑惑怎么没有Handler配置,filter过滤器等等。对...原创 2019-12-28 20:13:53 · 4409 阅读 · 0 评论