python
云丶图
人生苦短,我用python
展开
-
Python的垃圾回收机制深入分析
Python的垃圾回收机制深入分析一、概述:Python的GC模块主要运用了“引用计数”(reference counting)来跟踪和回收垃圾。在引用计数的基础上,还可以通过“标记-清除”(mark and sweep)解决容器对象可能产生的循环引用的问题。通过“分代回收”(generation collection)以空间换取时间来进一步提高垃圾回收的效率。二、引用计数在Python中...转载 2019-02-26 22:31:46 · 141 阅读 · 0 评论 -
并发编程的进程理论与多道技术的简单认识
一.操作系统操作系统是位于应用程序与硬件之间,本质上是一个软件.它是协调,管理,控制计算机硬件资源与软件资源的控制程序.操作系统的两大功能:1.将复杂的硬件操作封装成简单的接口让应用程序或者用户使用.2.将应用程序之间对硬件的竞争变得有序.操作系统计算过程:1.串行一个应用程序完完整整运行完毕后,另一个程序才开始运行2.并发看起来多个应用程序一起运行即可,单...原创 2018-09-04 14:32:01 · 248 阅读 · 0 评论 -
进程与线程的一个比较形象的比喻
看到一篇文章,它的比喻很形象,容易理解.1.计算机的核心是CPU,它承担了所有的计算任务.就像一个工厂,时刻都是运行。2.假设工厂电力有限,一次只能提供给一个车间使用.也就是说,一个车间使用时,其他车间都要停工.(单个CPU一次只能执行一个任务)3.进程就好比车间,它代表CPU能处理的单个任务。4.一个车间里,有好多工人,他们协同完成一个工作.线程就好比车间的工人,一个进程可...转载 2018-09-06 14:54:11 · 274 阅读 · 0 评论 -
ARP协议
一.arp协议的由来计算机通信基本靠吼,即广播的方式,所有上层的包到最后都要封装上以太网头,然后通过以太网协议发送.由于通信是基于mac的广播方式实现,计算机在发包时,获取自身的mac是容易的,如何获取目标主机的mac,就需要通过arp协议.二.arp协议功能广播的方式发送数据包,获取主机的mac地址.三.协议工作方式每台主机ip都是已知的例如:192.168.1...原创 2018-08-29 15:11:56 · 478 阅读 · 0 评论 -
网络协议介绍及三次握手四次挥手详解
一.C/S B/Sclient:客户端软件server:服务端软件client<--------------基于网络通信-------------->serverbrower(浏览器)<--------------基于网络通信-------------->server上网流程:应用软件把请求发送给操作系统,操作系统调用硬件网卡通过网线把请求发送给服...原创 2018-08-29 14:30:02 · 563 阅读 · 0 评论 -
python面向对象之单例模式
一.什么叫单例模式基于某种方法通过类实例化的得到的对象,或者说内存地址指向同一个.总共有4种方式.最后一个方式就是当作包导入使用。方式一方式一settings.py文件中内容:ip = '1.1.1.1'port = 3306版本一import settingsclass Mysql: __instance = None def __...原创 2018-08-28 15:26:19 · 154 阅读 · 0 评论 -
生产者消费者模型的简单认识
一.生产者消费者模型生产者:程序中负责产生数据的任务消费者:程序中负责处理数据的任务模型:就是模板生产者----->共享的介质(队列)------->消费者生产者只与队列沟通,消费者也只与队列沟通.二.为何用生产者消费者模型实现了生产者与消费者之间的解耦和生产者可以不停的生产,消费者可以不停的消费,从而平衡了生产者的生产能力与消费者的消费能力.提升...原创 2018-09-06 11:08:41 · 144 阅读 · 0 评论 -
超实用代码,让用户个人配置代替默认配置,仿Django的golbal_settings源码
废话不多说,直接上代码。golbal_settings是默认配置。import osimport importlibfrom . import golbal_settingsclass Setting(object): ''' 配置类,仿照Django的配置 ''' def __init__(self): # 先拿默认的配置 ...原创 2019-02-14 15:30:44 · 135 阅读 · 2 评论 -
Celery
Celery1.什么是CleleryCelery是一个简单、灵活且可靠的,处理大量消息的分布式系统专注于实时处理的异步任务队列同时也支持任务调度Celery架构Celery的架构由三部分组成,消息中间件(message broker),任务执行单元(worker)和任务执行结果存储(task result store)组成。消息中间件Celery本身不提供消息服务,但是可以方便的和...原创 2019-02-19 16:03:20 · 110 阅读 · 0 评论 -
乐观锁与悲观锁
一 乐观锁总是认为不会产生并发问题,每次去取数据的时候总认为不会有其他线程对数据进行修改,因此不会上锁,但是在更新时会判断其他线程在这之前有没有对数据进行修改,一般会使用版本号机制或CAS操作实现。version方式:一般是在数据表中加上一个数据版本号version字段,表示数据被修改的次数,当数据被修改时,version值会加一。当线程A要更新数据值时,在读取数据的同时也会读取version...原创 2019-02-23 23:05:54 · 187 阅读 · 0 评论 -
python实现发送邮件
python实现发送邮件一 使用SMTP模块发送邮件import smtplibfrom email.mime.text import MIMETextfrom email.mime.image import MIMEImagefrom email.header import Headermsg_from = '***@qq.com' # 发送方邮箱passwd = '****' ...原创 2019-01-15 18:52:29 · 8077 阅读 · 0 评论 -
python面向对象反射及内置方法
python面向对象反射及内置方法一.isinstance与issubclassisinstance:可以判断x是否是y类的实例化对象issubclass:判断B类是否A类的子类d={'a':1}print(isinstance(d,dict))class A: passclass B(A): passprint(issubclass(B,A))二.反射...原创 2019-01-18 15:48:26 · 200 阅读 · 0 评论 -
python模块之uuid
python模块之uuid一.uuiduuid是128位的全局唯一标识符,通常用32位的一个字符串的形式来表现。有时也称guidC#语言中使用。python中自带了uuid模块来进行uuid的生成和管理工作。UUID —— Universally Unique IDentifier Python中称为 UUIDGUID —— Globally Unique IDentifier ...原创 2019-01-18 15:47:52 · 471 阅读 · 0 评论 -
字符编码问题
一.文本编辑器存原理结论:在编写py的程序的时候,是没有语法的限制的,编辑的结果跟编写一个普通的文本文件是没有任何区别。只有把py程序交给python解释器并且在运行的第三个阶段才有了语法的意义二.python解释器执行python程序的原理第一阶段:先启动python解释器这个软件第二阶段:把py文件读取内存第三阶段:解释执行,识别语法三.什么是字符编码人类的字符翻译成0或1的数字...原创 2019-01-17 19:59:39 · 304 阅读 · 0 评论 -
Python内部类,内部类调用外部类属性,方法
一 Python中内部类class MyOuter: age=18 def __init__(self,name): self.name=name class MyInner: def __init__(self,inner_name): self.inner_name=inner_nameout=MyOute...原创 2018-12-17 10:07:04 · 4752 阅读 · 4 评论 -
Django的ContentType的使用
ContentType帮助我们快速连表,可以跟多个表做关联。比如:免费课程,收费课程,学位课程等跟价格策略关联。from django.db import modelsfrom django.contrib.contenttypes.models import ContentTypefrom django.contrib.contenttypes.fields import Gen...原创 2018-12-21 09:04:40 · 340 阅读 · 0 评论 -
GIL(全局解释器锁)
In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native threads from executing Python bytecodes at once. This lock is necessary mainly because CPython’s memory manag...原创 2018-09-07 14:57:37 · 152 阅读 · 0 评论 -
协程简介(单线程下实现并发)
一.协程1.目标:在线程下实现并发并发(多个任务看起来同时执行就是并发):切换+保存状态2.协程 协程是单线程下实现并发在应用程序里控制多个任务的切换+保存状态(原来是操作系统干的)注意:协程是程序员YY出来的东西,操作系统里只有进程和线程的概念(操作系统调度的是线程)单线程下实现并发就是为了提高效率的,所以只有在单线程下多个任务遇到IO切换就可以降低单线程的IO时间...原创 2018-09-10 17:12:04 · 1305 阅读 · 0 评论 -
进程池与线程池的简单介绍
一.什么是池池的功能是限制启动的进程数或线程数那么什么时候应该限制?当并发的任务数远远超过了计算机的承受能力时,即无法一次性开启过多的进程数或线程数时,就应该用池的概念将开启的进程数或线程数限制在计算机可承受的范围内二.同步与异步同步:提交任务后就在原地等待,直到任务运行完毕后拿到任务的返回值,再继续运行下一行代码,会导致任务是串行执行的异步:提交任务(绑定一个回调函...原创 2018-09-10 11:36:30 · 248 阅读 · 0 评论 -
python面向对象之元类
一.什么是元类在python中一切皆对象,那么自定义的类也是一个对象,用来实例化产生该类的类称为元类\二.为何用元类元类是负责产生类的,那么我们自定义元类的目的就是为了控制类的产生过程,还可以控制对象的产生过程.三.如何用元类创建类的方法有两种1.使用默认的元类type(type是所有自定义元类的类,如果没有继承type,那么它就是一个普通的自定义类,只有继承了t...原创 2018-08-27 16:12:16 · 129 阅读 · 0 评论 -
python写文件光标的用法
控制文件内光标的移动文件内指针移动,只有t模式下的read(n),n代表的字符的个数除此以外文件内指针的移动都是以字节为单位with open("a1.txt",'rt',encoding='utf-8') as f: msg = f.read(5)#t模式读的是字符,换行符算一个字符 print(msg) f.seek(3,0)#指针移动的是字节数,换行符算2个...原创 2018-07-27 14:08:47 · 3829 阅读 · 0 评论 -
python----------------常量池
常量池 就是经常使用的变量所存放的一个内存区域当你在创建一个字符串变量时系统会先到常量池查找是否有相同的数据 如果有则直接拿出来用 此时用id查看的效果就是 两个变量id相同s1 = "123"s2 = "123"s1 的 id 与 s2的id是相同的 说明123这个数据已经被保存到常量池了这么做的目的就是为了节省内存当s2 = "122" 时 同样会到常量池去查找 ...原创 2018-07-18 20:52:28 · 705 阅读 · 0 评论 -
python的re模块
\w 匹配字母数字及下划线\W 匹配非字母数字下划线\s 匹配任意空白字符,等价[\t\n\r\f]\S 匹配任意非空字符\d 匹配任意数字,等价[0-9]\D 匹配任意非数字\A 从字符串头开始匹配,匹配不上也不会向后匹配,以后不会用\Z 从末字符串末尾开始匹配,匹配不上也不会向前匹配,以后不会用\z 以后不会用\G 以后不会用\n 匹配一个换行符\t 匹配一个制表符^...原创 2018-08-14 17:15:38 · 105 阅读 · 0 评论 -
python的OS模块
import os# 重点:**# print(res)# * os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径# * os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd# * os.curdir 返回当前目录字符串名: ('.')# * os.pardir 获取当前目录的父目录字符串名:('..')# * o...原创 2018-08-07 19:23:48 · 94 阅读 · 0 评论 -
项目中logging模块的配置模板
import osBASE_DAR=os.path.dirname(os.path.dirname(__file__))#应该把项目的根目录加入到环境变量中DB_PATH=r'%s\db'%BASE_DARLOG_PATH=r'%s\log\access.log'%BASE_DARBOSS_PATH=r'%s\log\boss.log'%BASE_DARprint(BASE_D...原创 2018-08-05 14:45:28 · 356 阅读 · 0 评论