摘要:
【7.0】网络并发总复习解释版 网络编程部分 【一】软件开发架构 【1】什么是CS架构 CS架构即 客户端/服务端架构,如APP应用 【2】什么是BS架构 BS架构即 浏览器/服务端架构,如网页的网站 【3】二者相比的优缺点 (1)优点 CS架构 服务器运行数据载荷轻 数据的储存管理较为透明 BS架 阅读全文
posted @ 2024-01-23 14:34
Chimengmeng
阅读(66)
评论(0)
推荐(0)
摘要:
【6.0】网络并发总复习 网络编程部分 【一】软件开发架构 【二】互联网协议 【1】OSI七层 【2】五层协议 【3】以太网协议 【4】IP协议 【5】广播风暴 【6】TCP/UDP 【三】三次握手,四次挥手(****) 【四】socket协议 【五】TCP粘包问题(定值固定长度报头) 【六】UDP 阅读全文
posted @ 2024-01-23 14:34
Chimengmeng
阅读(29)
评论(0)
推荐(0)
摘要:
【一】多进程和多线程 import os.path import time from multiprocessing import Process from threading import Thread import requests from lxml import etree from fak 阅读全文
posted @ 2024-01-23 14:31
Chimengmeng
阅读(22)
评论(0)
推荐(0)
摘要:
【零】IO模型简介 我们研究的 IO 都是基于网络 IO 的 Stevens在文章中一共比较了五种IO Model: blocking IO nonblocking IO IO multiplexing signal driven IO (忽略) asynchronous IO 由signal dr 阅读全文
posted @ 2024-01-23 14:30
Chimengmeng
阅读(43)
评论(0)
推荐(0)
摘要:
基于 async 和 await 关键字的协程可以实现异步编程,这也是目前 Python 异步相关的主流技术。在这里我们主要介绍一下实现异步的模块:asyncio 模块 【一】asyncio 模块 asyncio 模块是 Python 中实现异步的一个模块,该模块在 Python3.4 的时候发布 阅读全文
posted @ 2024-01-23 14:29
Chimengmeng
阅读(44)
评论(0)
推荐(0)
摘要:
【一】基于单线程来实现并发 【0】并发的本质 本节的主题是基于单线程来实现并发 即只用一个主线程(很明显可利用的cpu只有一个)情况下实现并发 为此我们需要先回顾下并发的本质: 切换+保存状态 CPU正在运行一个任务 会在两种情况下切走去执行其他的任务(切换由操作系统强制控制) 一种情况是该任务发生 阅读全文
posted @ 2024-01-23 14:29
Chimengmeng
阅读(52)
评论(0)
推荐(0)
摘要:
【一】TCP实现并发的效果的原理 每开设一个客户端,就会有一个服务端服务 【1】服务端 from socket import * from threading import Thread def server_create(IP, PORT): server = socket() server.bi 阅读全文
posted @ 2024-01-23 14:29
Chimengmeng
阅读(27)
评论(0)
推荐(0)
摘要:
【零】队列queue介绍 queue队列 : 使用import queue,用法与进程Queue一样 queue is especially useful in threaded programming when information must be exchanged safely betwee 阅读全文
posted @ 2024-01-23 14:29
Chimengmeng
阅读(54)
评论(0)
推荐(0)
摘要:
【一】信号量(了解) 信号量Semahpore(同线程一样) 【1】引入 互斥锁 同时只允许一个线程更改数据,而Semaphore是同时允许一定数量的线程更改数据 比如厕所有3个坑,那最多只允许3个人上厕所,后面的人只能等里面有人出来了才能再进去 如果指定信号量为3,那么来一个人获得一把锁,计数加1 阅读全文
posted @ 2024-01-23 14:28
Chimengmeng
阅读(40)
评论(0)
推荐(0)
摘要:
【一】死锁 【1】介绍 死锁是指两个或多个进程,在执行过程中,因争夺资源而造成了互相等待的一种现象。 即两个或多个进程持有各自的锁并试图获取对方持有的锁,从而导致被阻塞,不能向前执行,最终形成僵局。 在这种情况下,系统资源利用率极低,系统处于一种死循环状态。 【2】示例 from threading 阅读全文
posted @ 2024-01-23 14:28
Chimengmeng
阅读(77)
评论(0)
推荐(0)
摘要:
【一】GIL全局解释器锁介绍 【1】官方解释 In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native threads from executing Python bytecod 阅读全文
posted @ 2024-01-23 14:28
Chimengmeng
阅读(45)
评论(0)
推荐(0)
摘要:
【一】问题 所有子线程都会进行阻塞操作,导致最后的改变只是改了一次 from threading import Thread import time money = 100 def task(): global money # 模拟获取到车票信息 temp = money # 模拟网络延迟 time 阅读全文
posted @ 2024-01-23 14:27
Chimengmeng
阅读(20)
评论(0)
推荐(0)
摘要:
【1】主线程死亡,子线程未死亡 主线程结束运行后不会马上结束,而是等待其他非守护子线程结束之后才会结束 如果主线程死亡就代表者主进程也死亡,随之而来的是所有子线程的死亡 from threading import Thread import time def task(name): print(f' 阅读全文
posted @ 2024-01-23 14:26
Chimengmeng
阅读(25)
评论(0)
推荐(0)
摘要:
【一】threading模块介绍 multiprocess模块的完全模仿了threading模块的接口 二者在使用层面,有很大的相似性,因而不再详细介绍 官网链接:https://docs.python.org/3/library/threading.html?highlight=threading 阅读全文
posted @ 2024-01-23 14:25
Chimengmeng
阅读(46)
评论(0)
推荐(0)
摘要:
【一】什么是线程 在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程 线程顾名思义,就是一条流水线工作的过程 一条流水线必须属于一个车间,一个车间的工作过程是一个进程 车间负责把资源整合到一起,是一个资源单位,而一个车间内至少有一个流水线 流水线的工作需要电源,电源就相当于cpu 所 阅读全文
posted @ 2024-01-23 14:25
Chimengmeng
阅读(35)
评论(0)
推荐(0)
摘要:
【一】引入 借助于消息队列,进程可以将消息放入队列中,然后由另一个进程从队列中取出。 这种通信方式是非阻塞的,即发送进程不需要等待接收进程的响应即可继续执行。 multiprocessing模块支持两种形式:队列和管道,这两种方式都是使用消息传递的 进程间通信(IPC)方式二:管道(不推荐使用,了解 阅读全文
posted @ 2024-01-23 14:24
Chimengmeng
阅读(83)
评论(0)
推荐(0)
摘要:
【一】什么是进程同步(互斥锁) 互斥锁(Mutex)是一种用于多线程编程中控制对共享资源访问的机制。 其作用是保证在同一时刻只有一个线程在访问共享资源,从而避免多个线程同时读写数据造成的问题。 互斥锁的基本原理是在对共享资源进行访问前加锁,使得其他线程无法访问该资源,当访问完成后再解锁,使得其他线程 阅读全文
posted @ 2024-01-23 14:24
Chimengmeng
阅读(373)
评论(0)
推荐(0)
摘要:
【一】引入 【1】什么是进程间通信(Inter-Process Communication, IPC) 进程间通信(Inter-Process Communication, IPC)是指两个或多个进程之间进行信息交换的过程。 它是一种计算机编程技术,用于在不同进程之间共享数据和资源。 【2】如何实现 阅读全文
posted @ 2024-01-23 14:24
Chimengmeng
阅读(65)
评论(0)
推荐(0)
摘要:
【一】什么是守护进程 守护进程 (daemon) 是在计算机系统启动时就已经运行,并且一直在后台运行的一类特殊进程。 它们通常不与用户直接交互,也不接受标准输入和输出,而是在后台执行某种任务或提供某种服务。 守护进程往往是由系统管理员手动启动的,它们可以在系统启动时自动启动,一直运行在后台,直到系统 阅读全文
posted @ 2024-01-23 14:23
Chimengmeng
阅读(73)
评论(0)
推荐(0)
摘要:
【一】引入 我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程。 子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束。 当一个 进程完成它的工作终止之后,它的父进程需要调用wait()或者waitpid()系统调用取得子进 阅读全文
posted @ 2024-01-23 14:23
Chimengmeng
阅读(75)
评论(0)
推荐(0)

浙公网安备 33010602011771号