一、线程

什么是线程:
    一个进程内最少自带一个线程,其实进程根本不能执行,进程不是执行单位,是资源的单位,分配资源的单位,线程才是执行单位;进程是最小的内存分配单位.
什么是多线程:
    多线程(即多个控制线程)的概念是,在一个进程中存在多个控制线程,多个控制线程共享该进程的地址空间,相当于一个车间内有多条流水线,
都共用一个车间的资源 有了进程为啥还要线程:
1.进程只能在一个时间干一件事,如果想同时干两件事或多件事,进程就无能为力了。   2.进程在执行的过程中如果阻塞,例如等待输入,整个进程就会挂起,即使进程中有些工作不依赖于输入的数据,也将无法执行。
关于程序结束的解释:
1.线程全部结束,程序的才真正结束
   2.线程之间资源共享,共享的是同一个进程中的资源,这样有数据安全隐患(解决的办法是加锁,递归锁(RLock)和同步锁(Lock))
   3.线程不需要写 if __name__=="__main__" 方法
  4.线程里面可以写input,但是子进程里面不可以写input.
1 如果这两个缺点理解比较困难的话,举个现实的例子也许你就清楚了:如果把我们上课的过程看成一个进程的话,那么我们要做的是耳朵听老师讲课,手上还要记笔记,脑子还要思考问题,这样才能高效的完成听课的任务。而如果只提供进程这个机制的话,上面这三件事将不能同时执行,同一时间只能做一件事,听的时候就不能记笔记,也不能用脑子思考,这是其一;如果老师在黑板上写演算过程,我们开始记笔记,而老师突然有一步推不下去了,阻塞住了,他在那边思考着,而我们呢,也不能干其他事,即使你想趁此时思考一下刚才没听懂的一个问题都不行,这是其二。
2     现在你应该明白了进程的缺陷了,而解决的办法很简单,我们完全可以让听、写、思三个独立的过程,并行起来,这样很明显可以提高听课的效率。而实际的操作系统中,也同样引入了这种类似的机制——线程。
举例来说为啥要线程

相关文章: