摘要:
本次网络编程的学习是根据老男孩视频的学习而所作的笔记,具体的参考博客:www.cnblogs.com/ly-c 没有想不到,只有不敢做 大胆闯吧少年! 阅读全文
摘要:
#方法: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... 阅读全文
摘要:
#select 和 poll 和epoll的区别 ''' select和poll有一个共同的机制,都是采用轮训的方式去询问内核,有没有数据准备好了 select有一个最大监听事件的限制,32位机限制1024,,6位机限制2048 poll没有,理论上poll可以开启无限大,1G内存大概够你开10W个事件去监听 epoll是最好... 阅读全文
摘要:
为什么要有协程? 因为想要在单线程内实现并发的效果。 因为CPthon有GIL锁,限制了在同一个时间点,只能执行一个线程 所以想要在执行一个线程的期间,充分的利用CPU的性能 所以才有了想在单线程内实现并发的效果。 并发:切换+保存状态 cpu是为什么要切换? 1 因... 阅读全文
摘要:
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... 阅读全文
摘要:
模块:ThreadPoolExecutor,ProcessPoolExecutor 导入方法: from concurrent.futures import ThreadPoolExecutor,ProcessPoolExecutor 原理: concurrent.futures是异步调用的机制 模块区分: from multiprocessing import Pool.apply/apply_ 阅读全文
摘要:
线程被称作轻量级的进程。 GIL:全局解释锁(只有Cpython解释器才有) 线程会被强迫放弃CPU的因素 (线程会受时间片影响)(GIL会限制每个线程的执行时间,一般是5毫秒)(或者限制线程执行固定数量的字节码) 对于线程来说,因为有了GIL,所以没有真正的并行 计算机的执行单位以线程为单位。计算机的最小可执行是线程。 进程是资源分配的基本单位。线程是可执行的基本单位,是可被调度的基本单位。 线 阅读全文
摘要:
from multiprocessing import Manager,Value m = Manager() num = m.dict({键 : 值}) num = m.list([1,2,3]) 阅读全文
摘要:
#模块:Pool #导入方法:from multiprocessing import Pool #原理: 进程池:一个池子,里边有固定数量的进程。这些进程一直处于待命状态,一旦有任务来,马上就有进程去处理。 因为在实际业务中,任务量是有多有少的,如果任务量特别的多,不可能要开对应那么多的进程数 开启那么多进程首先就需要消耗大量的时间让操作系统来为你管理它。其次还需要消耗大量时间让 cpu帮你调度它 阅读全文
摘要:
from multiprocessing import Queue# 是用于多进程的队列,就是专门用来做进程间通信(IPC)。import queue# 是用于同一进程内的队列,不能做多进程之间的通信 # q = queue.Queue()# # 先进先出# q.put(1)# q.put(2)# 阅读全文