摘要:
(一)引入 我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程。 子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束。 当一个 进程完成它的工作终止之后,它的父进程需要调用wait()或者waitpid()系统调用取得子进 阅读全文
摘要:
(一)基于单线程来实现并发 (0)并发的本质 基于单线程实现并发 即只用一个主线程(可利用的cpu只有一个)的情况下实现并发 并发的本质: 切换+保存状态 cpu正在运行一个任务 会在两种情况下去执行其他的任务 一:发生了IO阻塞 二:该任务的计算事件过长或者有一个优先级更高的任务代替了它 进程中的 阅读全文
摘要:
基于async和await关键字的协程可以实现异步编程,这也是目前Python异步相关的主流技术。 (一)asyncio模块 asyncio模块是Python中实现异步的一个模块,该模块在Python3.4的时候发布 asycnio和await关键字在Python3.5引入 (二)事件循环 事件循环 阅读全文
摘要:
(一)IO模型简介 目前我们眼睛的IO都是基于网络IO的 Stevens在文章中一共比较了五种IO Model: blocking IO 阻塞IO模型 nonblocking IO 非阻塞IO模型 IO multiplexing IO多路复用模型 signal driven IO (忽略) asyn 阅读全文
摘要:
(一)引入 (1)什么是进程间的通信 IPC 进程间通信(Inter-Process Communication, IPC)是指两个或多个进程之间进行信息交换的过程 它是一种计算机编程技术,用于在不同的进程之间共享数据和资源 (2)如何实现进程间通信 借助于消息队列,进程可以将消息放入队列中,然后由 阅读全文
摘要:
(一)引入 借助于消息队列,进程可以将消息放入队列中,然后由另一个进程从队列中取出。 这种通信方式是非阻塞的,即发送进程不需要等待接收进程的响应即可继续执行。 multiprocessing模块支持两种形式:队列和管道,这两种方式都是使用消息传递的 进程间通信(IPC)方式二:管道(不推荐使用,了解 阅读全文
摘要:
(一)GIL全局解释器锁介绍 GIL锁存在于我妈的解释器或者,解释器生来自带的锁 GIL锁是CPython解释器独有的一种锁 GIL锁导致的后果就是同一时刻同一个进程下只能有一个线程在运行,导致Python无法利用多核优势 # 在Cpython解释器中,同一个进程下开启的多线程,同一时刻只能有一个线 阅读全文
摘要:
(零)队列queue介绍 queue队列 : 使用import queue,用法与进程Queue一样 queue is especially useful in threaded programming when information must be exchanged safely betwee 阅读全文
摘要:
(一)什么是池 无论是开设进程还是开设线程,都需要消耗资源 只不过开设线程消耗的资源比开设进程消耗的资源要少一些 硬件的开发速度远远跟不上软件的开发速度 我们的宗旨是保证计算机硬件正常工作的情况下最大限度的利用计算机 池 池是用来保证计算机硬件安全的情况下最大限度的利用计算机 池降低了程序的运行效率 阅读全文
摘要:
主进程死亡,子线程也死亡 """守护线程""" # 主进程死亡,子线程也死亡 # 导入模块 from threading import Thread import time def run_task(): print(f"这是一个线程") time.sleep(3) def main_thread( 阅读全文