摘要: 本次网络编程的学习是根据老男孩视频的学习而所作的笔记,具体的参考博客:www.cnblogs.com/ly-c 没有想不到,只有不敢做 大胆闯吧少年! 阅读全文
posted @ 2019-10-22 12:39 LBC不认输 阅读(91) 评论(0) 推荐(0) 编辑
摘要: #方法:sk.setblocking(False) #服务器端: import socket sk=socket.socket() sk.setblocking(False) sk.bind(('127.0.0.1',8080)) sk.listen() #定义空列表用于存放各个conn Conn_List = [] #定义删除列表用于删除Conn_List中断开连接的客户端conn Conn... 阅读全文
posted @ 2019-10-22 12:38 LBC不认输 阅读(546) 评论(0) 推荐(0) 编辑
摘要: 为什么要有协程? 因为想要在单线程内实现并发的效果。 因为CPthon有GIL锁,限制了在同一个时间点,只能执行一个线程 所以想要在执行一个线程的期间,充分的利用CPU的性能 所以才有了想在单线程内实现并发的效果。 并发:切换+保存状态 cpu是为什么要切换? 1 因... 阅读全文
posted @ 2019-10-22 12:36 LBC不认输 阅读(107) 评论(0) 推荐(0) 编辑
摘要: #select 和 poll 和epoll的区别 ''' select和poll有一个共同的机制,都是采用轮训的方式去询问内核,有没有数据准备好了 select有一个最大监听事件的限制,32位机限制1024,,6位机限制2048 poll没有,理论上poll可以开启无限大,1G内存大概够你开10W个事件去监听 epoll是最好... 阅读全文
posted @ 2019-10-22 12:36 LBC不认输 阅读(361) 评论(0) 推荐(0) 编辑
摘要: 模块:ThreadPoolExecutor,ProcessPoolExecutor 导入方法: from concurrent.futures import ThreadPoolExecutor,ProcessPoolExecutor 原理: concurrent.futures是异步调用的机制 模块区分: from multiprocessing import Pool.apply/apply_ 阅读全文
posted @ 2019-10-22 12:35 LBC不认输 阅读(141) 评论(0) 推荐(0) 编辑
摘要: import time def func(): print(123) sum = 0 print(6666) yield sum print(7777) yield sum print(8888) yield sum def fff(): g = func() print('这是在ffff函数中') pri... 阅读全文
posted @ 2019-10-22 12:35 LBC不认输 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 线程被称作轻量级的进程。 GIL:全局解释锁(只有Cpython解释器才有) 线程会被强迫放弃CPU的因素 (线程会受时间片影响)(GIL会限制每个线程的执行时间,一般是5毫秒)(或者限制线程执行固定数量的字节码) 对于线程来说,因为有了GIL,所以没有真正的并行 计算机的执行单位以线程为单位。计算机的最小可执行是线程。 进程是资源分配的基本单位。线程是可执行的基本单位,是可被调度的基本单位。 线 阅读全文
posted @ 2019-10-22 12:34 LBC不认输 阅读(160) 评论(0) 推荐(0) 编辑
摘要: from multiprocessing import Manager,Value m = Manager() num = m.dict({键 : 值}) num = m.list([1,2,3]) 阅读全文
posted @ 2019-10-22 12:32 LBC不认输 阅读(158) 评论(0) 推荐(0) 编辑
摘要: #模块:Pool #导入方法:from multiprocessing import Pool #原理: 进程池:一个池子,里边有固定数量的进程。这些进程一直处于待命状态,一旦有任务来,马上就有进程去处理。 因为在实际业务中,任务量是有多有少的,如果任务量特别的多,不可能要开对应那么多的进程数 开启那么多进程首先就需要消耗大量的时间让操作系统来为你管理它。其次还需要消耗大量时间让 cpu帮你调度它 阅读全文
posted @ 2019-10-22 12:32 LBC不认输 阅读(158) 评论(0) 推荐(0) 编辑
摘要: from multiprocessing import Queue# 是用于多进程的队列,就是专门用来做进程间通信(IPC)。import queue# 是用于同一进程内的队列,不能做多进程之间的通信 # q = queue.Queue()# # 先进先出# q.put(1)# q.put(2)# 阅读全文
posted @ 2019-10-22 12:31 LBC不认输 阅读(335) 评论(0) 推荐(0) 编辑
摘要: #模块:Event #导入方法:from multiprocessing import Process,Event #模块方法: e=Event() e.is_set() #当is_set()的值为True时,e.wait()是非阻塞状态 #当is_set()的值为False时,e.wait()是阻塞状态 e.wait... 阅读全文
posted @ 2019-10-22 12:29 LBC不认输 阅读(114) 评论(0) 推荐(0) 编辑
摘要: #模块:Lock #导入方法:from multiprocessing import Process,Lock #模块方法: l=Lock() l.acquire() #对所访问的资源加锁 l.release() #释放锁 #使用方法:一般在需要访问的资源的那部分代码加锁释放锁,但在初学阶段可以先包含整段程序 ###########模拟抢票程序 from ... 阅读全文
posted @ 2019-10-22 12:28 LBC不认输 阅读(313) 评论(0) 推荐(0) 编辑
摘要: #注意!多进程之间无法共享内存,如下面代码中的n,如果在每一个子进程中调用n,则会报错! from multiprocessing import Process import time import random def func(i): print(i) if __name__=='__main__': l=[] n=100 addr=[... 阅读全文
posted @ 2019-10-22 12:27 LBC不认输 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 进程方法 1.p.start() #启动进程 2.p.run() #进程启动时运行的方法,是它去调用target指定的函数,自定义类中一定要实现该方法 3.p.terminate() #强制终止进程p,不会进行任何清理操作,如果p创建了子进程,该子进程就成了僵尸进程。如果p还保存了一个锁那么也将不会被释放,进而导致死锁 4.p.... 阅读全文
posted @ 2019-10-22 12:26 LBC不认输 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 多进程模块:Process #from multiprocessing import Process #os.getpid()获取的是当前进程自己的pid #os.getppid()获取的是当前进程的父进程的pid 实例化一个进程对象 #p = Process(target=func,args=(1,)) target: 是子进程要执行的任务 args:是父进程给子进程传递的参数 进程的方法: p 阅读全文
posted @ 2019-10-22 12:25 LBC不认输 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 并行 并发 并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。 普通解释: 并发:交替做不同事情的能力 并行:同时做不同事情的能力 专业术语: 并发:不同的代码块交替执行 并行:不同的代码块同时执行 同步:一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成 这是一种可靠的任务序列,要么成功都成功,失败都失败,两个任务的状态可以保 阅读全文
posted @ 2019-10-22 12:23 LBC不认输 阅读(186) 评论(0) 推荐(0) 编辑
摘要: from multiprocessing import Process import time def func(): for i in range(500): time.sleep(0.01) print('儿子在这里') if __name__ == '__main__': p = Process(target=func) p.start() p.join()# 是让主进程等待子进程执行完。 阅读全文
posted @ 2019-10-22 12:23 LBC不认输 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 操作系统的作用: 1,封装所有硬件接口,让各种用户使用电脑更加轻松 2,是对计算机内所有资源进行合理的调度和分配 进程: 是指正在执行的程序。 是程序执行过程中的一次 指令,数据集等的集合。 也可以叫做程序的一次执行过程。 进程是一个动态的概念。 进程由三大部分组成:代码段,数据段,PCB:进程管理控制 进程的三大基本状态: 就绪状态:已经获得运行需要的所有资源,除了CPU 执行状态:已经获得了所 阅读全文
posted @ 2019-10-22 12:22 LBC不认输 阅读(234) 评论(0) 推荐(0) 编辑
摘要: #server层 import socketserver import json import hashlib def zhuce(): pass class MySocket(socketserver.BaseRequestHandler): def handle(self): sor = b'wusir'# while 1: ... 阅读全文
posted @ 2019-10-22 12:21 LBC不认输 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 模块:socketserver模块(内置模块)(并发原理) socketserver这个模块主要是为了解决:TCP协议中,服务器不能同时连接多个客户端的问题 而继承的这个类中的self.request等价于原来socket中的conn(conn,addr=sk.accept()) #server层(固定形式) import socketserver class... 阅读全文
posted @ 2019-10-22 12:21 LBC不认输 阅读(93) 评论(0) 推荐(0) 编辑