在生活中,您可以在吃饭时观看视频,并在做作业时听音乐……这些是生活中的多次任务场景。计算机还可以执行多个任务,例如您可以在听歌曲时打开浏览器。..简单地说,多任务同时运行多个程序
单个核心CPU多任务的原理:操作系统允许每个人交替执行,QQ执行2US,切换到微信执行2US,然后切换到Cool Dog Music 2us ...在表面上...每个任务都是反复执行的,但实际上CPU执行得太快了,因此感觉就像是同一时间。
多核CPU实施任务原则:多个任务的真实多核执行只能在多核CPU上实现,但是由于任务的数量远远超过CPU的核心数量,因此操作系统将自动计划核心核心的许多任务。
当有多个线程运行时,如果系统只有一个CPU,则不能同时真正执行一个过程。它只能将CPU运行时间分为几个时间段,然后将时间段分配给各种线程为各种threadsexecute,当线程代码在一个时间段内运行时,其他线程处于悬挂状态。这样,我们称其为并发
当系统具有多个CPU时,线程的操作可能会不舒服。当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,并且两个线程不会抓住CPU资源。可以同时进行。这样
进程>>线程>> coroutine
定义过程(过程)是计算机中有关数据集上的运行活动的程序。它是系统分发和调度资源分配和调度的基本单元。它是操作系统结构的基础。在以过程为导向设计的早期计算机结构中,该过程是程序的基本执行实体。在以当代为导向的线程设计的计算机结构中,该过程是线程容器。编程是指令,数据及其组织形式的描述。该过程是程序的实体。(来源:百度百科全书)
让我们简单地理解:对于操作系统,任务是一个过程。例如,打开浏览器是启动浏览器的过程。打开记事本是记事本的过程。如果打开了两个,则打开两个。不是要启动两个记事本的过程
创建过程可以使用fork函数在Linux下创建一个进程,并且可以在Windows系统上引用多处理模块创建过程。我们可以使用多处理模块中的进程类创建一个新的进程
过程类描述
init()名称:过程名称
args:任何位置参数(参数传递到函数),迭代
Kwargs:任何关键字参数
目标:由过程实例动员的对象(您要调用的子过程操作)
组:通常,没有启动过程termination()而无需结束进程的constructor start()等待秒,可选和其他进程以执行End Run(),而无需给定目标参数,对,对,对吗?此对象调用start()方法,在执行对象is_alive()中的run()方法,而无需判断该过程实例是否由PID的名称过程执行。
自定义过程
当需要创建进程池时,子处理的数量不多,您可以直接在多处理中使用该处理来动态生成多个进程,但是如果是数十万个目标,则可以使用该过程。创建过程是巨大的。目前,您可以使用它。到达多处理模块提供的池方法。初始化池时,您可以指定最大数量的进程数。当将新请求提交到池中,如果池不满,则将创建一个新的进程来执行请求,但是如果池中的进程数已经达到池中的进程数,则数字池中的过程达到了最大值,然后请求等待。直到该过程在池中结束之前,将创建新的过程以执行
使用障碍物过程和非覆盖过程之间的差异在于apply和apply_async之间的差异
过程之间的通信
该块是否防止阻塞是为了防止不时超时,默认值不(始终),您可以自己修改时间
在这里,我们将队列Q作为参数传递给两个过程的函数,以便两个函数可以相互通信
摘要过程池:
池=池(nax)创建进程池对象
pool.apply()阻止
pool.apply_async()non -blocking
pool.close()添加任务
pool.join()特许权到主过程,直到流程池的结束为止,主过程被允许执行以下操作