这篇教程Python多线程编程入门详解写得很实用,希望能帮到您。
一、任务、进程和线程现代操作系统比如Mac OS X , Linux ,Windows 等,都是支持“多任务”的操作系统。 什么叫“多任务”(multitasking )呢?简单地说,就是操作系统可以同时运行多个任务。例如你一边在用浏览器上查资料,一边在听MP3,一边在用Word写文档,这就是多任务。 打开Windows的任务管理器,可以直观的了解一下: 
任务(task)是最抽象的,是一个一般性的术语,指由软件完成的一个活动。一个任务既可以是一个进程,也可以是一个线程。简而言之,它指的是一系列共同达到某一目的的操作。例如,读取数据并将数据放入内存中。这个任务可以作为一个进程来实现,也可以作为一个线程(或作为一个中断任务)来实现。 单核CPU如何实现“多任务” 
三个任务A,B,C在单个CPU上交替执行,逻辑上表现为三个执行实例并发执行,但实质物理上是串行执行。 多核CPU如何实现“多任务” 多任务的真正并行只能在多核CPU上实现,但是,一般而言,任务的数量多于CPU的核数,还是需要将多个任务轮流调度到每个核上执行。 单核与多核处理器(Multi-core processor )示例 
多核CPU:简单地说是将多个核心装载一个封装里,外观上看是一个处理器。 串行:一个处理完再一个。 并行:指两个或者多个事件在同一时刻发生。 并发:指两个或多个事件在同一时间间隔内发生。 例如:并发时你正在吃饭,吃到一半电话响,去接电话,接完后继续吃饭;并行时边吃饭边打电话。
进程(process)常常被定义为程序的执行。可以把一个进程看成是一个独立的程序,在内存中有其完备的数据空间和代码空间。一个进程所拥有的数据和变量只属于它自己。
线程(tread)则是某一进程中一路单独运行的程序。也就是说,线程存在于进程之中。一个进程由一个或多个线程构成,各线程共享相同的代码和全局数据 ,但各有其自己的堆栈。由于堆栈是每个线程一个,所以局部变量对每一线程来说是私有的 。由于所有线程共享同样的代码和全局数据,它们比进程更紧密,比单独的进程间更趋向于相互作用,线程间的相互作用更容易些,因为它们本身就有某些供通信用的共享内存:进程的全局数据。
进程和线程的关系(1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。 (2)资源分配给进程,同一进程的所有线程共享该进程的所有资源。 (3)处理机分给线程,即真正在处理机上运行的是线程。 (4)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。
二、Python既支持多进程,又支持多线程multiprocessing --- 基于进程的并行 Python实现原神抽卡的方法 Python调用百度AI实现身份证识别 |