随笔分类 - 网络编程
摘要:(一)IO模型简介 目前我们眼睛的IO都是基于网络IO的 Stevens在文章中一共比较了五种IO Model: blocking IO 阻塞IO模型 nonblocking IO 非阻塞IO模型 IO multiplexing IO多路复用模型 signal driven IO (忽略) asyn
阅读全文
摘要:基于async和await关键字的协程可以实现异步编程,这也是目前Python异步相关的主流技术。 (一)asyncio模块 asyncio模块是Python中实现异步的一个模块,该模块在Python3.4的时候发布 asycnio和await关键字在Python3.5引入 (二)事件循环 事件循环
阅读全文
摘要:(一)基于单线程来实现并发 (0)并发的本质 基于单线程实现并发 即只用一个主线程(可利用的cpu只有一个)的情况下实现并发 并发的本质: 切换+保存状态 cpu正在运行一个任务 会在两种情况下去执行其他的任务 一:发生了IO阻塞 二:该任务的计算事件过长或者有一个优先级更高的任务代替了它 进程中的
阅读全文
摘要:(一)死锁 (1)介绍 死锁是两个或多个进程,在执行过程中,因争夺资源而造成了互相等待的一种现象 即两个或多个进程蚩尤各自的锁并试图获取对方持有的锁,从而导致被阻塞,不能向前执行。最终形成僵局 在这种情况下,系统资源利用率极低,系统处于一种死循环状态 (2)示例 from threading imp
阅读全文
摘要:(一)问题 所有的子线程都会进行阻塞操作,导致最后的改变只是改了一次 from threading import Thread number= 100 def run_task(): global number # 设置一个线程自己的变量 t_number=number time.sleep(3)
阅读全文
摘要:(一)信号量 信号量Semahpore(同线程一样) (1)引入 互斥锁是 同一时刻只能由一个线程更改数据,而信号量是同一时刻可以允许一定数量的线程更改数据 互斥锁 同时只允许一个线程更改数据,而Semaphore是同时允许一定数量的线程更改数据 比如厕所有3个坑,那最多只允许3个人上厕所,后面的人
阅读全文
摘要:(一)引入 (1)什么是进程间的通信 IPC 进程间通信(Inter-Process Communication, IPC)是指两个或多个进程之间进行信息交换的过程 它是一种计算机编程技术,用于在不同的进程之间共享数据和资源 (2)如何实现进程间通信 借助于消息队列,进程可以将消息放入队列中,然后由
阅读全文
摘要:(一)引入 借助于消息队列,进程可以将消息放入队列中,然后由另一个进程从队列中取出。 这种通信方式是非阻塞的,即发送进程不需要等待接收进程的响应即可继续执行。 multiprocessing模块支持两种形式:队列和管道,这两种方式都是使用消息传递的 进程间通信(IPC)方式二:管道(不推荐使用,了解
阅读全文
摘要:(一)GIL全局解释器锁介绍 GIL锁存在于我妈的解释器或者,解释器生来自带的锁 GIL锁是CPython解释器独有的一种锁 GIL锁导致的后果就是同一时刻同一个进程下只能有一个线程在运行,导致Python无法利用多核优势 # 在Cpython解释器中,同一个进程下开启的多线程,同一时刻只能有一个线
阅读全文
摘要:(零)队列queue介绍 queue队列 : 使用import queue,用法与进程Queue一样 queue is especially useful in threaded programming when information must be exchanged safely betwee
阅读全文
摘要:(一)什么是池 无论是开设进程还是开设线程,都需要消耗资源 只不过开设线程消耗的资源比开设进程消耗的资源要少一些 硬件的开发速度远远跟不上软件的开发速度 我们的宗旨是保证计算机硬件正常工作的情况下最大限度的利用计算机 池 池是用来保证计算机硬件安全的情况下最大限度的利用计算机 池降低了程序的运行效率
阅读全文
摘要:主进程死亡,子线程也死亡 """守护线程""" # 主进程死亡,子线程也死亡 # 导入模块 from threading import Thread import time def run_task(): print(f"这是一个线程") time.sleep(3) def main_thread(
阅读全文
摘要:(一)什么是进程 理论上 正在进行的一个过程或者说一个任务 负责执行任务的是CPU (二)进程和程序的区别 理论上 程序就是一堆代码 进程是程序运行的过程 需要强调的是:同一个程序执行两次,那也是两个进程,比如打开暴风影音,虽然都是同一个软件,但是一个可以播放西游记,一个可以播放水浒传。 (三)进程
阅读全文
摘要:(一)sultiprocessing模块介绍 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大部分情况需要使用多进程。 Python提供了multiprocessing。 multiprocessing模块用来开启子进
阅读全文
摘要:操作系统 (一)引入 顾名思义,进程即正在执行的一个过程。 进程是对正在运行程序的一个抽象。 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一。 操作系统的其他所有内容都是围绕进程的概念展开的。 所以想要真正了解进程,必须事先了解操作系统 (二)为什
阅读全文
摘要:socke简介 我们知道两个进程如果需要进行通讯最基本的一个前提能能够唯一的标示一个进程,在本地进程通讯中我们可以使用PID来唯一标识一个进程但PID只在本地唯一,网络中的两个进程PID冲突几率很大,这时候我们需要另辟它径了,我们知道IP层的ip地址可以唯一标示主机,而TCP层协议和端口号可以唯一标
阅读全文
摘要:socket编程 socke编程又称套接字编程 TCP套接字编程模板 server 服务端 # 导入模块 import socket # 获取服务端对象 server = socket.socket() # 获取IP 和 端口号 IP='127.0.0.1' PORT=9888 # 将IP和套接字绑
阅读全文
摘要:网络编程 cs架构与bs架构 引入 C/S和B/S都是互联网中常见的网络结构模型。 (一)什么是C/S模型 C是英文单词'Client'的首字母,即客户端的意思。 C/S就是'Client/Server'的缩写,即'客户端/服务器'模式 例如:拼多多APP等客户端。 (二)什么是B/S模型 B是英文
阅读全文