随笔分类 - python网络编程
关于python网络编程方面的学习笔记
摘要:并发总结: 并发的定义,能不能同时服务多个客户端 其实,以后做并发可以从三个思路出发,三种技术 一 进程并行,只能开到CPU个数进程,但是它能用来处理计算型(cpu密集型)的任务 # 开销大 二 如果并行不是必须的,那么是否可以考虑用并发来代替?(IO密集型) # 线程,单位开销比进程小很多 因为线
阅读全文
摘要:协程简介 协程(coroutine),又称为微线程,纤程,是一种用户级的轻量级线程。协程拥有自己的寄存器上下文和栈。 协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来时,恢复之前保存的上下文 和栈。因此协程能保存上一次调用的状态,每次协程重入时,相当于进入上一次调用的状态。 在并发编程中,
阅读全文
摘要:可重复利用的线程(关于队列计数器,可参考这里) from queue import Queue from threading import Thread class MyThread(Thread): # 继承线程类 def __init__(self): super().__init__() #
阅读全文
摘要:生产者负责生产,消费者负责消费,简化工作量 使用random库随机生成一个数来表示生产和消费的量 线程 进程需要注意的事,队列导入的不是queue库里的,虽然也可以,但是不推荐,这里推荐用multiprocessing.Manage.Queue() 运行结果如图:代码会一直执行,除非手动停止
阅读全文
摘要:目录 Manage 队列 先入先出 互斥锁 Manage 进程间的通信是被限制的 两个结果,第一个是2,第二个是1 > 进程内存空间是独立的 解决方案:开辟一个新的进程空间,通过代理器和管理器进行通信 1, 管理器负责与公共进程通信 2, 代理负责操作共享空间 这里需要知道,可以开启的代理空间有以下
阅读全文
摘要:普通套接字方法(socket套接字) 非阻塞套接字方法(非阻塞套接字) IO多路复用epoll方法(IO多路复用epollselector实现服务器) 多进程方法(详解) 线程方法 进程池/线程池方法(方法介绍) gevent协程实现
阅读全文
摘要:在一个CPU(一核)的电脑上, 程序的运行是并发运行的,调度的算法叫时间片轮转法,也叫轮询法 在多CPU(多核)的电脑上,一个CPU跑一个程序,刚程序运行数量小于核心数时,程序是并行的 并发:看上去一起执行,同时在发生 并行:真正的一起执行,同时在进行 进程的概念: 计算机程序是存储在磁盘上的可执行
阅读全文
摘要:1 import socket 2 import selectors # IO多路复用选择器的模块 3 4 # 实例化一个和epoll通信的选择器 5 epoll_selector = selectors.EpollSelector() # 如果是非linux系统: .DefaultSelector() 6 server = socket.socket() 7 serve...
阅读全文
摘要:开始之前,需要先了解一下什么会引起进程阻塞和唤醒的事件 (1)向系统请求共享资源失败。 进程在向系统请求共享资源时,由于系统已无足够的资源分配给它,此时进程因不能继续运行而转变为阻塞状态。 (2)等待某种操作的完成。 当进程启动某种操作后,如果该进程必须在该操作完成之后才能继续执行,则先将该进程阻塞
阅读全文
摘要:了解套接字之前,需要先了解基本的传输模型 其次,还需要了解网络的七层划分和四层结构 在python中,数据链路层相当于硬件层,python不需要了解,只用在传输层进行学习就足够了 其中,传输层分为TCP传输协议和UDP协议,TCP协议相当于打电话,是可靠传输,但是UDP的传输是不可靠的,就像发短信,
阅读全文