什么是线程

  进程和线程都是虚拟的单位,都是用来帮助我们形象的描述某种事物

  进程是资源分配的最小单位,线程是cpu调度的最小单位,每一个进程中至少有一个线程,进程只是在线程运行过程中提供代码运行所需的资源

  将内存比作工厂,那么进程就相当于工厂的车间,而线程就相当于车间内的流水线

为什么要有线程

  进程

    一个进程只能在一个时间干一件事,如果想干多件事,进程就无能为力了

    开一个进程需要开辟一个新的内存空间,将代码丢进去执行,这是一件十分耗费资源的事

  线程

    一个进程中可以开多个线程,并且线程和线程之间的数据也是共享的

    开启线程的资源耗费是远远小于开启一个进程的

进程和线程的区别:

  1.地址空间的区别和资源之间的共享

  2.通信:进程间通信要通过队列来实现,而线程之间可以直接读写所处进程中的数据来通信

  3.调度和切换:线程的调度切换比进程快的多

  4.在多线程操作系统中,进程不是一个可执行的实体

 

2.创建线程的两种方式

  和创建进程类似,创建线程也有两种方式

 1 from threading import Thread
 2 import time
 3 
 4 def task(name):
 5     print('%s开始'%name)
 6     time.sleep(1)
 7     print('%s结束'%name)
 8 
 9 # 线程的代码块不需要写在__main__内,但是我们还是习惯性的写在里边
10 t = Thread(target=task,args=('sxc',))
11 t1 = Thread(target=task,args=('zzj',))
12 t.start()
13 t1.start()
14 print('')
 1 from threading import Thread
 2 import time
 3 
 4 class MyThread(Thread):  # 新建一个类继承父类Thread的方法
 5     def __init__(self,name):
 6         super().__init__()
 7         self.name = name
 8 
 9     def run(self):
10         print('%s开始'%self.name)
11         time.sleep(1)
12         print('%s结束'%self.name)
13 
14 if __name__ == '__main__':
15     t1 = MyThread('sxc')  # 类名加括号实例化对象
16     t2 = MyThread('zzj')
17     t1.start()
18     t2.start()
19     print('')
第二种方式

相关文章: