摘要:
提交任务的两种方式:同步调用与异步调用 同步调用 使程序编程串行 异步调用 阻塞:是进程运行的一种状态,进程运行是碰到I/O就进行阻塞状态,会被剥夺走cpu的执行权限。 同步不同于阻塞,同步:是提交任务的一种方式,如果提交的任务是一个纯计算的同步,没有I/O,提交后要等,没有阻塞。 阅读全文
摘要:
一 进程池与线程池 在刚开始学多进程或多线程时,我们迫不及待地基于多进程或多线程实现并发的套接字通信。 server import socket from threading import Thread def communicate(conn): while True: try: data = c 阅读全文
摘要:
一 线程queue queue is especially useful in threaded programming when information must be exchanged safely between multiple threads. 有三种不同的用法 class queue. 阅读全文
摘要:
一 信号量 信号量也是一把锁,可以指定信号量为5,对比互斥锁同一时间只能有一个任务抢到锁去执行,信号量同一时间可以有5个任务拿到锁去执行,如果说互斥锁是合租房屋的人去抢一个厕所,那么信号量就相当于一群路人争抢公共厕所,公共厕所有多个坑位,这意味着同一时间可以有多个人上公共厕所,但公共厕所容纳的人数是 阅读全文
摘要:
一 死锁现象 所谓死锁: 是指两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程,如下就是死锁 执行效果 二 递归锁 解决方法,递归锁,在Python中为了支持 阅读全文
摘要:
定义: In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native threads from executing Python bytecodes at once. This lo 阅读全文
摘要:
守护线程 无论是进程还是线程,都遵循:守护xxx会等待主xxx运行完毕后被销毁 需要强调的是:运行完毕并非终止运行 详细解释: 在一个进程内,如果不开其它线程,默认就只有一个主线程,主线程代码运行完,改进程结束 在一个进程内,开多线程,主线程在运行完毕后,等待其它线程运行完毕后,结束。主线程结束代表 阅读全文
摘要:
Thread对象的其他属性或方法 介绍 getName()和setName() 执行结果 线程1 is running主线程 主线程名称儿子线程1 is done isAlive() 执行结果 线程1 is runningTrue线程1 is done 主线程等待子线程结束 执行结果 线程1 is 阅读全文
摘要:
一 开启线程速度快于进程 开进程的开销远大于开线程 进程 执行结果 主进程进程1 is working 进程1 end 线程 执行结果 线程1 is working 主线程线程1 end 二 同一进程内的线程共享该进程的数据 1、进程之间地址空间是隔离的 执行结果如下,毫无疑问子进程p已经将自己的全 阅读全文
摘要:
一 threading模块介绍 multiprocess模块的完全模仿了threading模块的接口,二者在使用层面,有很大的相似性,因而不再详细介绍 二 开启线程的两种方式 方式一 方式二 三 练习题 1、基于多线程实现并发的套接字通信 2、编写一个简单的文本处理工具,具备三个任务,一个接收用户输 阅读全文
摘要:
一 什么是线程 在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程 线程顾名思义,就是一条流水线工作的过程(流水线的工作需要电源,电源就相当于cpu),而一条流水线必须属于一个车间,一个车间的工作过程是一个进程,车间负责把资源整合到一起,是一个资源单位,而一个车间内至少有一条流水线。 阅读全文
摘要:
生产者消费者模型介绍 生产者指的是生产数据的任务,消费者指的是处理数据的任务。 在并发编程中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完,才能继续生产数据。同样的道理,如果消费者的处理能力大于生产者,那么消费者就必须等待生产者。为了解决这个问题,引入了生产者和消费 阅读全文