- 进程是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例。
- 线程是程序执行时的最小单位,它是进程的一个执行流。
- 进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵
- 线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多
- 进程实现
from multiprocessing import Pool import time import random import os def work(msg): start = time.time() print("work{}开始执行,id为{}".format(msg, os.getpid())) time.sleep(random.random()*2) stop = time.time() print("work{}耗时{}.".format(msg, stop-start)) p = Pool() for i in range(10): # 非堵塞运行 p.apply_async(work, args=(i,)) # 堵塞进行 # p.apply(work, args=(i,)) print("开始") p.close() p.join() print("结束")
- 线程实现
import threading import os from time import sleep def sorry(i): print('say sorry {}'.format(i)) sleep(1) if __name__ == '__main__': for i in range(1,10): t = threading.Thread(target=sorry, args=(i,)) t.start()
本文首发于python黑洞网,博客园同步更新
来源:https://www.cnblogs.com/pythonzhilian/p/12547111.html