一、进程与线程的区别
1、进程
进程是一个执行中的程序,每个进程有自己的地址空间、内存和数据栈等,进程和进程之间是相互独立的吗,每个进程都有自己的PCB,所以只能采用进程间通信(IPC)实现数据共享。
2、线程
线程可以理解为进程中的一条条指令,每一个进程中都有一个主线程,各个线程和主线程之间共享一片数据空间;因此相比与独立的进程而言,线程间的信息共享和通信更加容易实现。
二、多线程
1、多线程和多进程的选择?
由于python的虚拟机是单线程的(GIL),因此在进行IO密集型的操作时候,选择多线程可以体现计算机的高并发状态;当进行计算密集型的操作时,选择多进程可以充分利用多核CPU的计算能力。
2、线程的实例
(1)线程的创建
线程的创建有三种方法,我们使用其中最简单的一种:传递函数
thread= threading.Thread(target = func, args = ())
(2)线程的启动
thread.start()
(3)线程的等待
thread.join()
3、多线程的实例
import threading,time
t = []
def func(i):
time.sleep(2)
print('thread %s is over'%i)
def main():
for i in range(2):
thread = threading.Thread(target=func, args=(i,))
t.append(thread)
for i in range(2):
t[i].start()
for i in range(2):
t[i].join()
if __name__ == '__main__':
main()
4、进程的同步请参考下一篇博客