文章目录
- 1. 简单的多进程示例代码
- 2. 进程、线程异同对比
在Python多任务学习笔记(1)——线程中,我们学习了通过线程来实现多任务,而进程也是实现多任务的一种方式,可以简单地将电脑上运行着的每个应用程序理解为一个进程,如:QQ、微信、360杀毒软件等。
1. 简单的多进程示例代码
下面是一段简单的用Python语言实现的多进程代码,对比Python多任务学习笔记(1)——线程中通过Thread
类创建线程对象实现多任务的代码,可以发现二者十分类似,只是将包名由threading
换成了multiprocessing
,将类名由Thread
换成了Process
。
import multiprocessing
import time
def test1():
while True:
print("Inside Function test1......")
time.sleep(1)
def test2():
while True:
print("Inside Function test2......")
time.sleep(1)
def main():
process1 = multiprocessing.Process(target=test1)
process2 = multiprocessing.Process(target=test2)
process1.start()
process2.start()
if __name__ == "__main__":
main()
需要说明的是,上述代码运行起来后,将会产生3个进程:1个主进程、2个子进程。
2. 进程、线程异同对比
- 进程和线程都是实现多任务的一种方式;
- 进程先运行起来后才会有线程,线程不能够独立存在(如:一个运行着的音乐播放器程序就是一个进程,下载音乐和播放音乐各是其中一条线程,首先需要音乐播放器程序进程运行才可能下载或播放音乐),线程是受到CPU调度来实际负责程序执行的一条条程序控制流;
- 进程中的多条线程之间一般共享资源(如存储于内存中的变量等),但由主进程创建的多个子进程一般会复制主进程的资源,且通常进程间的资源(如变量等)相互独立,即使用多进程完成多任务一般资源开销大,而线程则较为轻量级;
- 多线程之间因为共享资源,虽然资源开销小,但是不利于资源的管理和保护,而多进程恰好相反。
下面以工厂中流水线为例,解释进程和线程:
- 一个进程可以理解为工厂中的一条流水线;
- 一条线程可以理解为流水线上的一名工人;
- 通过多线程实现多任务相当于往一条生产线上增加工人;
- 通过多进程实现多任务相当于开辟新的流水线。