欢迎来到Louis的博客

人生三从境界:昨夜西风凋碧树,独上高楼,望尽天涯路。 衣带渐宽终不悔,为伊消得人憔悴。 众里寻他千百度,蓦然回首,那人却在灯火阑珊处。
扩大
缩小

文章分类 -  python 从入门到放弃

python - 单例模式
摘要:一.使用__new__创建单例对象 二.基于python模块化的单例模式 由于python模块导入有一个特性,就是当模块对象导入一次以后就会生成pyc文件,pyc文件中存储这些模块信息,下次再次导入则是从pyc中取,不会再次生成对象,这样也就保证了模块导入的对象,在使用时只会生成一个对象,也就是单例 阅读全文

posted @ 2019-01-15 15:25 Louiszj 阅读(94) 评论(0) 推荐(0) 编辑

python 进程,IO多路复用,协程
摘要:上篇内容回顾: 1. GIL锁 GIL的叫做全局解释器锁,用于限制一个进程中在一个时间点只有一个线程能够执行(获取到GIL的线程),语言初期设计的初衷是用于维护数据安全,但是在现有的硬件环境下,GIL锁在执行计算密集型运算时效率会导致效率下降(较其他支持多线程语言来说)。 2. 进程和线程的区别 进 阅读全文

posted @ 2018-09-12 16:28 Louiszj 阅读(120) 评论(0) 推荐(0) 编辑

python 生产者消费者模型
摘要:import threading import queue import time lock = threading.RLock() q = queue.Queue() #创建一个队列 def producer(id): ''' 生产者模型 :param id: :return: ''' print('厨师%s开始做包子'% id) ... 阅读全文

posted @ 2018-09-11 18:38 Louiszj 阅读(87) 评论(0) 推荐(0) 编辑

python 多线程 threading.local
摘要:threading.local 是一个全局变量,作用在线程(主线程和子线程适用)中,目的是在每个线程中私有一份空间存放自己私有的变量。 用法: 以上代码的每个线程中都有一个v.phone且值都是隔离独立的。 模拟实现: 上面代码中定义的类在实例化时,创建了一个字典,当在线程中使用obj.num1 = 阅读全文

posted @ 2018-09-11 17:53 Louiszj 阅读(387) 评论(0) 推荐(0) 编辑

python 线程安全
摘要:什么叫线程安全 当多个线程同时运行时,保证运行结果符合预期,就是线程安全的。由于多线程执行时,存在线程的切换,而python线程的切换时机是不确定的。既有cooperative multitasking的调度,也有preemptive multitasking的调度。 python线程什么时候切换呢 阅读全文

posted @ 2018-09-11 16:40 Louiszj 阅读(930) 评论(0) 推荐(0) 编辑

python 线程锁
摘要:为什么会有锁? 在编程世界中,只要语言设计到多线程的,都会有线程安全(线程安全请移步这里)的说法,而在所有支持多线程的语言中,锁的大多用法都是为了线程安全。 在python中锁的左右有这两种: 1. 维护线程安全 2. 为了能够连续执行线程中的某一段连续的代码 python中的5种锁的编写和区别: 阅读全文

posted @ 2018-09-11 16:17 Louiszj 阅读(133) 评论(0) 推荐(0) 编辑

python 线程GIL
摘要:GIL是什么? GIL的全称是Global Interpreter Lock(全局解释器锁),来源是python设计之初的考虑,为了数据安全所做的决定。 每个CPU在同一时间只能执行一个线程(在单核CPU下的多线程其实都只是并发,不是并行,并发和并行从宏观上来讲都是同时处理多路请求的概念。但并发和并 阅读全文

posted @ 2018-09-10 19:46 Louiszj 阅读(105) 评论(0) 推荐(0) 编辑

python实现ftp服务器
摘要:服务端 客户端 服务端配置 客户端配置 目录结构 readme 阅读全文

posted @ 2018-09-10 15:56 Louiszj 阅读(240) 评论(0) 推荐(0) 编辑

python struct 模块
摘要:python struct 模块 阅读全文

posted @ 2018-09-05 07:57 Louiszj 阅读(86) 评论(0) 推荐(0) 编辑

python subprocess模块
摘要:简介 subprocess最早在2.4版本引入。用来生成子进程,并可以通过管道连接他们的输入/输出/错误,以及获得他们的返回值。 subprocess用来替换多个旧模块和函数: os.system os.spawn* os.popen* popen2.* commands.* 运行python的时候 阅读全文

posted @ 2018-09-05 07:56 Louiszj 阅读(135) 评论(0) 推荐(0) 编辑

简单理解socket
摘要:TCP/IP 要想理解socket首先得熟悉一下TCP/IP协议族, TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,定义了主机如何连入因特网及数据如何再它们之间传输的标准, 从字面意思来看TCP/IP是TCP和 阅读全文

posted @ 2018-09-05 07:54 Louiszj 阅读(143) 评论(0) 推荐(0) 编辑

python3 socket接入图灵机器人自动聊天
摘要:使用python3的socket模块 server.py client.py 阅读全文

posted @ 2018-09-04 11:14 Louiszj 阅读(429) 评论(0) 推荐(0) 编辑

hashlib模块
摘要:hashlib 阅读全文

posted @ 2018-09-04 07:21 Louiszj 阅读(63) 评论(0) 推荐(0) 编辑

logging模块
摘要:logging模块 阅读全文

posted @ 2018-09-04 07:20 Louiszj 阅读(80) 评论(0) 推荐(0) 编辑

Python C3算法
摘要:MRO mro的全称是method resolution order, 翻译过来也就是方法解析顺序,主要是用于python中多继承判断方法或者属性的路径。 C3算法 判断mro要先确定一个线性序列,然后查找路径由由序列中类的顺序决定。所以C3算法就是生成一个线性序列。如果继承至一个基类:class 阅读全文

posted @ 2018-09-03 15:27 Louiszj 阅读(143) 评论(0) 推荐(0) 编辑

python 抽象类,抽象方法,主动约束
摘要:问题:你想定义一个结构或者抽象类,来确保子类实现了某些特定的方法 解决方法一: 以上写法在python源码中较多,也是在做类型约束时比较常用的一种做法。 解决方法二: 使用abc模块,可以很轻松的定义抽象基类 抽象类的一个特点是它不能直接被实例化 抽象类的目的就是让别的类继承它并实现特定的抽象方法 阅读全文

posted @ 2018-08-31 16:38 Louiszj 阅读(98) 评论(0) 推荐(0) 编辑

python 反射
摘要:反射getattr 通过字符串从指定对象获取的属性; getattr(x,'y')相当于x.y. # getattr(o,name) #通过字符串从指定对象获取的属性; getattr(x,'y')相当于x.y. # def getattr(object, name, default=None): # known special case of getattr """ getattr(obje... 阅读全文

posted @ 2018-08-31 16:12 Louiszj 阅读(102) 评论(0) 推荐(0) 编辑

面向对象 3
摘要:类型判断issubclass 判断类classA是否是类classB的子类 # issubclass(classA, classB) 判断类classA是否是类classB的子类, # 包括A和B有多层的继承关系也可判断,例如类B是类C的子类,那么类A也是类C的子类。 # issubclass(classA, (classB,class... 阅读全文

posted @ 2018-08-31 16:08 Louiszj 阅读(90) 评论(0) 推荐(0) 编辑

面向对象 2
摘要:类的成员 变量 实例变量(字段) 类变量(静态字段) 类变量和实例变量的区别: 1. 定义方式不同: 类变量必须在定义类的时候创建并赋值,程序编译后就存在内存当中了。 实例变量必须定义在__init__构造函数中,可以通过构造函数的参数进行传参赋值,也可以直接进行赋值,定义实例变量需要在变量前加se 阅读全文

posted @ 2018-08-28 16:36 Louiszj 阅读(125) 评论(0) 推荐(0) 编辑

使用163smtp发送邮件
摘要:import smtplib from email.mime.text import MIMEText mail_host = 'smtp.163.com' mail_user = '发件人邮箱' mail_pwd = '授权码' sender = '发件人邮箱' receivers = ['收件人邮箱'] content = 'python使用163smtp发送邮件' title = '... 阅读全文

posted @ 2018-08-27 20:40 Louiszj 阅读(2071) 评论(0) 推荐(0) 编辑

导航