上一页 1 ··· 5 6 7 8 9 10 11 12 13 下一页
摘要: 一 信号量 信号量也是一把锁,可以指定信号量为5,对比互斥锁同一时间只能有一个任务抢到锁去执行,信号量同一时间可以有5个任务拿到锁去执行,如果说互斥锁是合租房屋的人去抢一个厕所,那么信号量就相当于一群路人争抢公共厕所,公共厕所所有多个坑位,这意味着同一时间可以有多个人上公共厕所,但公共厕所容纳的人数 阅读全文
posted @ 2018-07-11 17:54 芳姐 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 一 死锁现象 所谓死锁:是指两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程,如下就是死锁 执行效果 二 递归锁 解决方法,递归锁,在Python中为了支持在 阅读全文
posted @ 2018-07-11 16:22 芳姐 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 一 引子 在一个Python的进程内,不仅有test.py的主线程或者由该主线程开启的其它线程,还有解释器开启的垃圾回收等解释器级别的线程,总之,所有线程都运行在一个进程内 综上: 如果多个线程的target=work,那么执行流程是: 多个线程先访问到解释器的代码,即拿到执行权限,然后将targe 阅读全文
posted @ 2018-07-11 10:34 芳姐 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 一 守护线程 无论是进程还是线程,都遵循:守护XXX会等待主XXX运行完毕后被销毁 需要强调的是:运行完毕并非终止运行 详细解释: 验证 执行结果 二 练习 输出: 阅读全文
posted @ 2018-07-10 09:55 芳姐 阅读(161) 评论(0) 推荐(0) 编辑
摘要: Thread对象的其它属性或方法 介绍: 验证 执行结果 主线程等待子线程结束 执行结果 阅读全文
posted @ 2018-07-10 09:21 芳姐 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 一 谁的开启速度快 1. 在主进程下开启线程 执行结果如下:几乎是t.start()的同时就将线程开启了,然后先打印出了hello,证明线程的创建开销极小 2、在主进程下开启子进程 执行结果如下:p.start()将开启进程的信号发给操作系统后,操作系统要申请内存空间,让好拷贝父进程地址空间到子进程 阅读全文
posted @ 2018-07-10 09:00 芳姐 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 一 threading模块介绍 multiprocess模块完全模仿了threading模块的接口,二者在使用层面,有很大的相似性 二 开启线程的两种方式 方式一 方式二 三 练习题 1、基于多线程实现并发的套接字通信 客户端: 服务端: 阅读全文
posted @ 2018-07-08 13:46 芳姐 阅读(6901) 评论(0) 推荐(0) 编辑
摘要: 一 什么是线程 在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程 线程顾名思义,就是一条流水线工作的过程(流水线的工作需要电源,电源就相当于CPU),而一条流水线必须属于一个车间,一个车间的工作过程是一个进程,车间负责把资源整合到一起,是一个资源单位,而一个车间内至少有一条流水线。 阅读全文
posted @ 2018-07-08 11:58 芳姐 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 一 生产者消费者模型介绍 为什么要使用生产者消费者模型 生产者指的是生产数据的任务,消费者指的是处理数据的任务,在并发编程中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完,才能继续生产数据。同样的道理,如果消费者的处理能力大于生产者,那么消费者就必须等待生产者。为了 阅读全文
posted @ 2018-07-08 10:06 芳姐 阅读(3245) 评论(0) 推荐(1) 编辑
摘要: 队列介绍 进程彼此之间互相隔离,要实现进程间通信(IPC),multiprocessing模块支持两种形式:队列和管道,这两种方式都是使用消息传递的 创建队列的类(底层就是以管道和锁定的方式实现) 参数介绍 主要方法介绍 队列的使用 阅读全文
posted @ 2018-07-08 08:46 芳姐 阅读(211) 评论(0) 推荐(1) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 下一页