摘要:
**********协程********** *****准备**** 之前我们学习了线程、进程的概念,了解了在操作系统中进程是资源分配的最小单位,线程是CPU调度的最小单位。 按道理来说我们已经算是把cpu的利用率提高很多了。但是我们知道无论是创建多进程还是创建多线程来解决问题, 都要消耗一定的时间来创建进程、创建线程、以及管理他们之间的切换。 随着我们对于效率的追求不断提高,基于单线程来... 阅读全文
摘要:
进程与线程的区别: 1)进程是资源分配的最小单位,线程是CPU调度的最小单位。每一个进程中至少有一个线程。 2)地址空间和其他资源(如打开文件): 进程间相互独立,同一进程的个线程之间共享。某进程内的线程在其他进程中不可见。 3)通信: 进程间的通信IPC,线程间可以直接读写进程数据段(如全局变量) 阅读全文
摘要:
********线程池******** Python标准模块--Concurrent.futures 1.介绍 Concurrent.futures模块提供了高度封装的异步调用接口 ThreadPoolExecutor:线程池,提供异步调用 ProcessPoolExecutor:进程池,提供异步调用 Both implement the same interface, which i... 阅读全文
摘要:
网络编程+并发编程 架构:B/S 和 C/S C/S:充分发挥PC机的性能 B/S:统一了应用的接口,隶属于CS架构 OSI模型 七层:表示层,会话层,应用层,传输层,网络层,数据链路层,物理层。 我们用五层 应用层 http协议 https协议 ftp协议 snmp/pop3/stmp/dns 传输层 tcp udp 协议 (四层交换机) 网络层 IP协议/icmp... 阅读全文
摘要:
*********线程和python******** ******理论知识****** ****全局解释器锁(GIL)**** Python代码的执行由Python虚拟机(也叫解释器主循环)来控制。Python在设计之初就考虑到要在主循环中, 同时只有一个线程在执行。虽然Python解释器中可以“运行”多个线程,但在任意时刻只有一个线程在解释器中运行。 对Python虚拟机的访问由全局解... 阅读全文
摘要:
********线程理论******** *****线程概念的引入背景**** **进程 之前我们已经了解了操作系统中进程的概念,程序并不能单独运行,只有将程序装载到内存中,系统为 它分配资源才能运行,而这种执行的程序就称之为进程。程序和进程的区别就在于:程序是指令的集合, 它是进程运行的静态描述文本;进程是程序的一次执行活动,属于动态概念。在多道编程中,我们允许 多个程序同时加载到内存中... 阅读全文
摘要:
********生产者消费者模型******** 在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题。该模式通过平衡生产线程和消费 线程的工作能力来提高程序的整体处理数据的速度。 为什么要使用生产者和消费者模式 在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程。在多线程开发当中,如果 生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完,才能... 阅读全文
摘要:
********进程池******** ****进程池**** 为什么要有进程池? 答: 在程序实际处理问题过程中,忙时会有成千上万的任务需要被执行,闲时可能只有零星任务。那么在成千 万个任务需要被执行的时候,我们就需要去创建成千上万个进程么?首先,创建进程需要消耗时间,销毁 程也需要消耗时间。第二即便开启了成千上万的进程,操作系统也不能让他们同时执行,这样反而会影响 序的效率。因此我们不... 阅读全文
摘要:
********进程之间的数据共享********(了解) 展望未来,基于消息传递的并发编程是大势所趋 即便是使用线程,推荐做法也是将程序设计为大量独立的线程集合,通过消息队列交换数据。 这样极大地减少了对使用锁定和其他同步手段的需求,还可以扩展到分布式系统中。 但进程间应该尽量避免通信,即便需要通信,也应该选择进程安全的工具来避免加锁带来的问题。 以后尝试使用数据库来解决现在进程之间... 阅读全文
摘要:
********进程间通信-队列和管道******** ****进程间通信-队列和管道 IPC(Inter-Process Communication) ****队列 **概念介绍 创建贡献的进程队列,Queue是多进程安全的队列,可以使用Queue实现多进程之间的数据传递。 Queue([maxsize]) 创建共享的进程队列。 参数 :maxsize是队列中允许的最大项数。如果省... 阅读全文