python3 day09练习题

1、进程和线程的区别?
1).地址空间和其它资源(如打开文件):进行间互相独立,同一进程的各线程间共享.某进程内的线程在其它进程不可见.
2).通信:进程间通信IPC,线程间可以直接读写进程数据断(如全局变量)来进行通信--需要进程同步和互斥手段的辅助,以保证数据的一致性.
3).调度和切换:线程上下文切换比进程上下文切换要快的多.
4).在多线程操作系统中,进程不是一个可执行的实体,真正去执行程序的不是进程,是线程,你可以理解进程就是一个线程的容器.

2、进程间内存是否共享?如何实现通讯?
进程间内存是不共享的.
进程间可以通过队列、管道、数据共享、信号量和事件等方式通讯.

3、进程池、线程池的优势和特点?
优势:提高操作系统效率,减少空间的占用等,可以实现进程或线程的复用,节省系统资源。

特点:一般约定俗成的是进程池中的进程数量为CPU的数量,工作中要看具体情况来考量。
进程池和线程池再使用的时候可以根据自己的系统配置情况单独指定进程或线程的个数,快速的完成任务,同时又能实现进程或线程的复用。


4、GIL锁是怎么回事?
GIL锁(Global Interpreter Lock)全局解释器锁
首先需要明确的一点是GIL并不是Python的特性,它是在实现Python解析器(CP thon)时所引入的一个概念。
在Cpython解释器中,同一进程下开启的多线程,同一时刻只能有一个线程执行,无法利用多核优势.
GIL本质就是一把互斥锁,既然是互斥锁,所有互斥锁的本质都一样,都是将并发运行变成串行,以此来控制同一时间内共享数据只能被一个任务所修改,进而保证数据安全。


5、线程和协程的异同?
线程是作为利用CPU的基本单位,是花费最小开销的实体。线程具有以下属性。
  1)轻型实体,线程是动态概念。    
  2)独立调度和分派的基本单位,线程是能独立运行的基本单位,因而也是独立调度和分派的基本单位。
  3)共享进程资源,线程在同一进程中的各个线程,都可以共享该进程所拥有的资源。
  4)可并发执行。在一个进程中的多个线程之间,可以并发执行,甚至允许在一个进程中所有线程都能并发执行。

协程:是单线程下的并发,又称微线程,纤程。英文名Coroutine。一句话说明什么是线程:协程是一种用户态的轻量级线程,
即协程是由用户程序自己控制调度的。
总结协程特点:
1)必须在只有一个单线程里实现并发
2)修改共享数据不需加锁
3)用户程序里自己保存多个控制流的上下文栈
4)一个协程遇到IO操作自动切换到其它协程。


posted on 2019-06-27 09:37  lilyxiaoyy  阅读(159)  评论(0编辑  收藏  举报

返回
顶部