python实例编程
HYJ0101
这个作者很懒,什么都没留下…
展开
-
python编程-IO模型
文章目录阻塞IO非阻塞IO非阻塞的TCP传输IO多路复用select机制poll机制epoll机制selector模块异步IO阻塞IO我们用一副图来描述阻塞IO的过程阻塞IO会阻塞两段时间:等待数据准备好复制数据到进程中非阻塞IO和阻塞IO不同的是,在系统内核还未准备好数据的时候,应用程序会往下执行,但程序每隔一段时间,会不断向内核发起系统调用询问数据的准备情况,效率仍然不高。直到有一次数据准备好之后,就会进行数据的复制操作将数据提交给应用程序进行使用非阻塞的TCP传输impor原创 2020-11-26 17:14:58 · 147 阅读 · 0 评论 -
python-多线程编程(五)- 队列的其他方法、线程池
文章目录队列栈优先级队列线程池基本方法简单例子回调函数队列线程的队列使用方法和进程中介绍的大致是相同的,这里再介绍几个队列类我们使用queue模块import queue栈LifoQueue类会生成一个栈类型的队列,其中的数据是先进后出的import queueq = queue.LifoQueue()for i in range(10): q.put(i)print(q.get())-------------------9优先级队列PriorityQueue,原创 2020-11-24 14:14:42 · 135 阅读 · 0 评论 -
python-多线程编程(四)- 条件、定时器
条件这是线程中不太常用的一个模块,主要也是起到一个类似于事件的功能,可以理解为它是一个复数的事件,可以控制代码运行的次数我们用一个例子来讲述条件模块from threading import Thread,Conditionfrom time import sleepdef loop1(con,i): con.acquire() con.wait() #当条件没有通知执行的时候,就会在这句进行堵塞 print("这是第%d次执行"%i) con.release()原创 2020-11-24 11:32:55 · 124 阅读 · 0 评论 -
python-多线程编程(三)- 事件、信号量
信号量线程信号量的使用方法和进程是一致的,决定了同一时间能运行的代码的的数量from threading import Semaphore,Threadfrom time import sleepdef func1(sem,i): sem.acquire() sleep(1) print("线程信号量") n = i + 3 print(n) sem.release()if __name__ == '__main__': sem =原创 2020-11-24 10:57:10 · 225 阅读 · 0 评论 -
python-多线程编程(二)- 守护线程、线程锁
一、守护线程守护线程的使用方法和守护进程类似,也是deamon=True的方式来启动一个守护线程,但是具体的执行结果和守护进程略有不同。from threading import Threadfrom time import sleepdef func1(): while True: print("$$$$$") sleep(2)def func2(): sleep(6) print("子线程运行结束")t1 = Thread(t原创 2020-11-23 23:04:20 · 153 阅读 · 0 评论 -
python-多线程编程(一)基础使用以及全局解释器锁
文章目录一、多线程模块基础使用启动线程其他方法二、全局解释器锁GIL三、多线程实现socket一、多线程模块基础使用启动线程使用方法一:from threading import Threaddef func1(i): print("我是线程%d"%i)if __name__ == '__main__': for i in range(10): t = Thread(target=func1,args=(i,)) t.start()使用方法原创 2020-11-23 18:14:50 · 143 阅读 · 0 评论 -
python-多进程编程(七)-- 回调函数
回调函数的定义非常简单,就是当一个子进程结束之后,它会将返回值作为一参数返回给主进程中指定的函数并执行这个函数。from multiprocessing import Pooldef func1(i): print("in func1") return i*idef func2(n): print("in func2") print(n)if __name__ == '__main__': pool = Pool(5) pool.apply_a原创 2020-11-20 10:05:55 · 523 阅读 · 0 评论 -
python-多进程编程(六)-- 进程池
文章目录使用进程池的原因进程池的基础使用同步执行任务异步执行任务使用进程池的原因由于每一次开启进程,需要系统为其开辟属于这个进程的内存空间以及一系列寄存器、堆栈、文件的分配,关闭一个进程的时候也有一系列回收的操作。因此每一次使用多进程批量执行任务,是很消耗系统资源,并且降低效率的。因此就有了进程池的概念,系统会预先创建一定数量的进程,每当有任务来的时候,就会使用已经创建的进程来运行任务代码,任务结束之后也不会释放,因此大大减少了进程创建和回收的时候的资源损耗,提高了代码运行的效率进程池的基础使用原创 2020-11-20 09:53:54 · 119 阅读 · 0 评论 -
python-多进程编程(五)-- 管道
管道也是一种进程间互相通信的方法,它和队列相比,它是队列的底层实现方法,因此在平常的应用中也比队列更加少见,但是理解它对进程间的通信有很大的帮助简单例子from multiprocessing import Pipeconn1,conn2 = Pipe()conn1.send('123456')print(conn2.recv())其实管道的基本使用非常简单,就是一个管道的类实例化之后会生成两个实例对象,就类似于管道的两个端点,从一头发出的消息会被另一端接收到。可以看到和tcp传递消息很相原创 2020-11-19 17:29:33 · 950 阅读 · 1 评论 -
python-多进程编程(四)-- 队列以及生产者消费者模型
111原创 2020-11-19 11:59:21 · 266 阅读 · 0 评论 -
python-多进程编程(三)-- 事件event
事件Event是用于堵塞进程执行的一个用途,可以让进程之间做到同时堵塞同时进行,类似于一种断点的效果,常用于一种信号状态的传递Event类的基础用法e = Event() #创建一个event对象e.is_set() #展示当前event的状态,一个对象刚被创建是,状态都为False即阻塞状态e.wait() #wait方法会根据当前的对象状态来控制程序是否阻塞e.set() #将当前的事件状态改为Truee.clear() #将当前的事件状态改为False下面我们展示一个简单原创 2020-11-18 17:49:05 · 680 阅读 · 0 评论 -
python-多进程编程(二)-- 进程锁、信号量
我们有时候会遇到这样的情况,当有100个线程同时去操作一个文件或者修改一个数据的时候,会发生什么呢?我们来看一下下面的例子from time import sleepfrom threading import Threadclass Account(object): def __init__(self): self._balance = 0 def deposit(self, money): # 计算存款后的余额 new_bal原创 2020-11-17 17:33:57 · 792 阅读 · 2 评论 -
python-多进程编程(一)
进程和线程进程的定义进程的定义有很多,普遍的定义是进程是一个程序在一个数据集上动态执行的过程。进程一般由程序,数据集和进程控制三部分组成。程序是指各种指令的集合,表述这我们需要计算机需要执行的动作。数据集则是在程序执行的过程中用到的数据和...原创 2020-01-16 17:16:41 · 154 阅读 · 0 评论 -
python-socket编程(四)多线程
我们之前例子都是一个服务端同时只能接受一个客户端的请求,而我们实际的情况是,一个服务端可能要应对上百上千个客户端的请求。而这样的需求就只能通过多进程或者多线程的方法来进行实现,多线程和多进程具体是怎么实现,我们先不做深入探究,先看一个简单的多线程的实例。实现代码服务端import socketserverclass MyServer(socketserver.BaseRequestH...原创 2019-12-26 19:59:24 · 894 阅读 · 0 评论 -
python-socket编程(三)粘包
在看粘包之前我们先看一个实例这个实例是在客户端输入指令在服务端执行并返回执行结果其中subprocess就是将命令交予系统进行运行的模块代码服务端import socketimport subprocessip_port=('127.0.0.1',8001)backlog=5buffersize=1024tcp_server = socket.socket(socket...原创 2019-12-25 16:45:29 · 155 阅读 · 0 评论 -
python-socket编程(二)模块基础
111原创 2019-12-12 16:38:08 · 147 阅读 · 0 评论 -
python-socket编程(一)原理篇
文章目录一、什么是socket(套接字)1.1 套接字的概述1.2 套接字的工作流程二、tcp/ip协议2.1 报文结构2.2 基础术语2.3 三次挥手2.3 四次挥手面试常见问题一、什么是socket(套接字)1.1 套接字的概述Socket是应用层和网络层的中间软件抽象层,它是一组接口,由ip和端口组成。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在S...原创 2019-11-26 20:08:53 · 542 阅读 · 0 评论