随笔分类 - python-d-并发编程
摘要:第八章主要内容 一、问答题 1、简述计算机操作系统中的“中断”的作用? 2、简述计算机内存中的“内核态”和“用户态”; 3、什么是进程? 4、什么是线程? 5、简述程序的执行过程; 6、什么是“系统调用”? 7、threading模块event和condition的区别; 8、进程间通信方式有哪些?
阅读全文
摘要:1.io模型提交任务得方式: 同步:提交完任务,等结果,执行下一个任务 异步:提交完,接着执行,异步 + 回调 异步不等结果,提交完任务,任务执行完后,会自动触发回调函数同步不等于阻塞: 阻塞:遇到io,自己不处理,os会抢走cpu ,解决办法:监测到io,gevent切换到其他任务,类似欺骗os
阅读全文
摘要:1.协程并发:切+保存状态单线程下实现并发:协程 切+ 保存状态 yield 遇到io切,提高效率 遇到计算切,并没有提高效率 检测单线程下 IO行为 io阻塞 切 相当于骗操作系统 一直处于计算协程:。。。单线程下实现并发:根本目标:遇到IO就切,一个线程的整体IO降下来程序用的cpu 时间长,就
阅读全文
摘要:1.线程queue :会有锁 q=queue.Queue(3) q.get() q.put()先进先出 队列后进先出 堆栈优先级队列 1 """先进先出 队列""" 2 import queue 3 q=queue.Queue(3) #先进先出->队列 4 5 q.put('first') 6 q.
阅读全文
摘要:1.互斥锁: 原理:将并行变成串行 精髓:局部串行,只针对共享数据修改 保护不同的数据就应该用不用的锁 1 from threading import Thread, Lock 2 import time 3 4 n = 100 5 6 def task(): 7 global n 8 mutex.
阅读全文
摘要:1.开启线程的两种方式: 进程,线程: 进程只是用来把资源集中到一起(进程只是一个资源单位,或者说资源集合)而线程才是cpu上的执行单位) 1.同一个进程内的多个线程共享该进程内的地址资源 2.创建线程的开销远小于创建进程的开销(创建一个进程,就是创建一个车间,涉及到申请空间, 而且在该空间内建至少
阅读全文
摘要:1.队列的使用: 队列引用的前提: 多个进程对同一块共享数据的修改:要从硬盘读文件,慢,还要考虑上锁: 所以就出现了 队列 和 管道 都在内存中(快); 队列 = 管道 + 上锁 用队列的目的: 进程间通信(IPC),队列可以放任意类型的数据,应该放小东西, q = Queue(3) get put
阅读全文
摘要:1.互斥锁: 互斥锁:Lock 原理就是把并发变成串行,一个一个运行,不错乱,但效率低 保证多个进程修改一块数据时,大家是一个一个修改,不错乱 mutex.acquire() mutex.release() 1 from multiprocessing import Process,Lock 2 i
阅读全文
摘要:1.开启子进程的两种方式: 1 # 方式1: 2 from multiprocessing import Process 3 import time 4 5 def task(name): 6 print('%s is running'%(name)) 7 time.sleep(2) 8 print
阅读全文
摘要:1.操作系统的功能: 1.隐藏丑陋复杂的硬件接口,提供良好的抽象接口,供程序来调 eg: f.open() f.close() 2.管理,调度进程,负责将多个进程对硬件的竞争变得有序。(qq,word,暴风) 》 (cpu 内存 硬盘) 2.操作系统的发展史: 1.1940-1955(第一代计算机)
阅读全文