Python 7 多线程及进程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 7 多线程及进程相关的知识,希望对你有一定的参考价值。

进程与线程:

进程的概念:

1、程序的执行实例称为进程。
2、每个进程都提供执行程序所需的资源。一个进程有一个虚拟地址空间、可执行代码、对系统对象的开放句柄、一个安全上下文、一个独特的进程标识符、环境变量、一个优先级类、最小和最大工作集大小,
以及至少一个执行线程。每个进程以一个线程开始,通常称为主线程,但可以从它的任何线程创建额外的线程。 3、程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程。程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本;
进程是程序的一次执行活动,属于动态概念。 4、在多道编程中,我们允许多个程序同时加载到内存中,在操作系统的调度下,可以实现并发地执行。这是这样的设计,大大提高了CPU的利用率。进程的出现让每个用户感觉到自己独享CPU,
因此,进程就是为了在CPU上实现多道编程而提出的。

有了进程为什么还要线程?

   进程有很多优点,它提供了多道编程,让我们感觉我们每个人都拥有自己的CPU和其他资源,可以提高计算机的利用率。很多人就不理解了,既然进程这么优秀,为什么还要线程呢?
其实,仔细观察就会发现进程还是有很多缺陷的,主要体现在两点上: 1、进程只能在一个时间干一件事,如果想同时干两件事或多件事,进程就无能为力了。 2、进程在执行的过程中如果阻塞,例如等待输入,整个进程就会挂起,即使进程中有些工作不依赖于输入的数据,也将无法执行。

 

线程的概念:

1、线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务
2、线程是执行上下文,它是CPU执行指令流所需的全部信息。
3、假设你正在读一本书,现在你想休息一下,但你希望能够回来,从你停下来的确切地点恢复阅读。一个实现的方法就是记下页码,行数和字数。所以你阅读书的执行上下文是这3个数字。
如果你有一个室友,而且她使用相同的技巧,她可以在你不使用的时候拿书,然后从她停止阅读的地方继续阅读。然后你可以收回它,从你原来的地方恢复它。
4、线程以同样的方式工作。CPU给了你一个错觉,那就是它在同时进行多个运算。它通过在每个计算上花费一点时间来实现这一点。它可以这样做,因为它为每个计算都有一个执行上下文。
就像你可以和朋友共享一本书一样,许多任务可以共享一个CPU。 5、在更高的技术层面上,执行上下文(因此线程)由CPU寄存器的值组成。
最后:线程不同于进程。线程是执行的上下文,而进程是与计算相关联的一堆资源。一个进程可以有一个或多个线程。 说明:与进程相关的资源包括内存页(进程中的所有线程对内存具有相同的视图)、文件描述符(例如,打开套接字)和安全凭据(例如启动进程的用户ID)。

进程与线程的区别:

1、线程共享创建它的进程的地址空间;进程有自己的地址空间。
2、线程直接访问进程的数据段;进程拥有父进程的数据段的自身副本。
3、线程可以直接与其他线程的过程;过程必须使用进程间通信与兄弟姐妹的过程。
4、很容易创建新线程;新进程需要重复父进程。
5、线程可以对相同进程的线程进行相当的控制;进程只能对子进程进行控制。
6、对主线程的更改(取消、优先级更改等)可能影响进程的其他线程的行为;对父进程的更改不会影响子进程。

 

 

 







以上是关于Python 7 多线程及进程的主要内容,如果未能解决你的问题,请参考以下文章

python3.7多线程代码不执行?

[Python3] 043 多线程 简介

python中的多线程和多进程编程

基于Windows平台的Python多线程及多进程学习小结

Java多线程概述及创建

Python 多进程和多线程 的使用