04 2021 档案
摘要:一、进程池与线程池 无 二、协程 协程可以让我们在单线程下实现并发,是一种用户态的轻量级线程,即协程是由用户程序自己控制调度的。 greenlet模块 from greenlet import greenlet def eat(name): print('%s 吃了一口饭' % name) g2.s
阅读全文
摘要:一、互斥(同步)锁 互斥锁又称同步锁,而锁的目的是为了保护共享的数据,同一时间只能有一个线程来修改共享的数据 那我们之前学过GIL锁,那GIL锁和互斥锁不同之处在哪? 1、GIL锁和Lock 前者是解释器级别的(当然保护的就是解释器级别的数据,比如垃圾回收的数据),后者是保护用户自己开发的应用程序的
阅读全文
摘要:一、线程的概念 首先我们学习了进程,进程有很多优点,它提供了多道编程,提高计算机的利用率。很多人就不理解了,既然进程这么优秀,为什么还要线程呢?其实,仔细观察就会发现进程还是有很多缺陷的,主要体现在两点上: 进程只能在一个时间干一件事,如果想同时干两件事或多件事,进程就无能为力了。 进程在执行的过程
阅读全文
摘要:生产者消费者模型 from multiprocessing import Process, Queue import time import random def producer(queue, food,name): # 生产的东西,放到Queue中 for i in range(1,11): d
阅读全文
摘要:一、Queue队列 进程彼此之间互相隔离,要实现进程间通信(IPC),则要借助于multiprocessing模块下的Queue,我们先通过下面的案例了解一下Queue的使用 from multiprocessing import Queue if __name__ == '__main__': q
阅读全文
摘要:一、高并发的tcp服务端 实现 服务端可以一次 服务多个客户端 import socket from multiprocessing import Process def talk(sock, addr): print('客户端连接成功', addr) while True: try: data =
阅读全文
摘要:一、multiprocessing模块介绍 multiprocessing模块用来开启子进程,并在子进程中执行我们定制的任务(比如函数),该模块与多线程模块threading的编程接口类似。 二、Process类的介绍 我们先编写一个进程吧,然后拿这段代码举例 from multiprocessin
阅读全文
摘要:一、进程基础 狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed)。 广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程
阅读全文
摘要:Socket层 Socket套接字,是从osi七层抽象出来的抽象层,抽象了网络层和传输层,跟语言无关,任何语言都会有socket的封装。Socket是专门给开发人员用的 一、基于Tcp的socket套接字(重点) 1.1、服务端 import socket # 导入socket模块 ''' 第一个s
阅读全文
摘要:一、互联网通信协议 我们学习网络编程的目的是为了开发C/S架构或者B/S架构的软件 Client Server # C/S架构,由客户端和服务端组成 数据放在服务端和客户端的利与弊 服务端统一处理有更好的安全性和稳定性而且升级比较容易,不过服务器负担就增加了。 客户端将负担分配到每个用户,从而可以节
阅读全文
摘要:1、异常处理 异常是程序发生错误的信号,一旦程序出错,Python解释器就会产生一个异常,如果该异常如果没有被处理,程序的运行就会立即终止。 2、为何要处理异常 增强程序的健壮性,鲁棒性 3、如何处理异常 具体来说错误分为两大类: 1、语法错误SyntaxError 1、程序运行前会先检测语法,
阅读全文
摘要:一、组合 组合,就是一个对象拥有一个属性,这属性的值是另外一个对象,这样就能调用另外一个对象的功能 class Foo: def __init__(self, x, y): self.x = x self.y = y def func1(self): print('Foo的func1') class
阅读全文
摘要:一、继承的认知 1、什么是继承 继承是一种新建子类的方式,新建的类称之为子类/派生类,被继承的称之为父类/基类,子类会遗传父类的属性 2、为何要用继承 类是解决对象之间冗余问题的,继承可以解决类与类之间的冗余问题 3、如何继承 在python中支持多继承 在python3中如果一个类没有继承任何父类
阅读全文
摘要:一、封装介绍 面向对象编程有三大特性:封装、继承、多态,其中最重要的一个特性就是封装。封装指的就是把数据与功能都整合到一起,听起来是不是很熟悉,没错,我们之前所说的”整合“二字其实就是封装的通俗说法。除此之外,针对封装到对象或者类中的属性,我们还可以严格控制对它们的访问,分两步实现:隐藏与开放接口
阅读全文
摘要:一、面向对象的概念 面向对象,重点在于对象二字,对象指的是盛放相关的数据与功能的容器 基于该思想编写程序就在创造一个个的容器来把相关的东西盛到一起 优点:扩展性强 缺点:加大了编程的复杂度 二、类与对象 何谓对象,我们已经知道了,那类又是什么?类即类别、种类,是面向对象设计最重要的概念。 具有相同或
阅读全文
摘要:多层装饰器叠加 import time def statistic_time(func): """统计时间的装饰器""" def wrapper2(*args, **kwargs): start = time.time() res = func(*args, **kwargs) end = time
阅读全文
摘要:一、time时间模块 1.时间戳 import time # 作用:从1970年到现在经过的秒数,用于时间间隔的计算 time.time() # 具体案例 start = time.time() print('猜猜我运行了几秒') time.sleep(1) # 作用:让程序在此处暂停1秒 stop
阅读全文
摘要:一、模块介绍 模块就是一系列功能的集合体,我们的程序可以导入模块来复用模块里的功能。 我们使用模块的目的就是:1.拿来主义,极大地提升开发效率,2.解决代码冗余问题 1、模块分为四种类别 1、使用python编写的.py文件 2、把一系列模块组织到一起的文件夹(文件夹下有一个__init__.py文
阅读全文