线程
线程是操作系统能够进行运算调度的最小单位(程序执行流的最小单元)。它被包含在进程之中,
是进程中的实际运作单位。一个进程中可以并发多个线程,每条线程并行执行不同的任务。
(线程是进程中的一个实体,是被系统独立调度和分派的基本单元)
线程和进程的区别:
(1)线程共享内存空间;进程的内存是独立的
(2)同一个进程的线程之间可以直接交流;两个进程想通信,必须通过一个中间代理来实现
(3)创建新线程很简单; 创建新进程需要对其父进程进行一次克隆
(4)一个线程可以控制和操作同一进程里的其他线程;但是进程只能操作子进程
(5)改变主线程(如优先权),可能会影响其它线程;改变父进程,不影响子进程
多线程
现在pc都是多核的,使用多线程能充分利用 CPU 来提供程序的执行效率
线程:
线程是一个基本的 CPU 执行单元,它必须依托于进程存活
进程:
进程是指一个程序在给定数据集合上的一次执行过程,是系统进行资源分配和运行调用的独立单位。
可以简单地理解为操作系统中正在执行的程序。也就说,每个应用程序都有一个自己的进程
每一个进程启动时都会最先产生一个线程,即主线程。然后主线程会再创建其他的子线程
两者的区别
线程必须在某个进程中执行。
一个进程可包含多个线程,其中有且只有一个主线程。
多线程共享同个地址空间、打开的文件以及其他资源。
多进程共享物理内存、磁盘、打印机以及其他资源
例:
setDaemon(True):把子线程设置为守护线程,主线程和子线程会同时运行,主线程结束运行后,无论子线程运行与否,都会和主线程一起结束。
join():join函数会使得主调线程阻塞,直到被调用线程运行结束或超时,才执行主线程。
join(3) : 等待3秒再执行主线程