1.进程

1.1定义

程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程。

程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本;进程是程序的一次执行活动,属于动态概念。

在多道编程中,我们允许多个程序同时加载到内存中,在操作系统的调度下,可以实现并发地执行。这是这样的设计,大大提高了CPU的利用率。

进程的出现让每个用户感觉到自己独享CPU,因此,进程就是为了在CPU上实现多道编程而提出的。

1.2优点

进程有很多优点,它提供了多道编程,让我们感觉我们每个人都拥有自己的CPU和其他资源,可以提高计算机的利用率。

进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。

但是也有缺陷:

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

  • 进程在执行的过程中如果阻塞,例如等待输入,整个进程就会挂起,即使进程中有些工作不依赖于输入的数据,也将无法执行。

2.线程

2.1定义

线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,

只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。


3.应用

3.1区别

进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。

 

1) 简而言之,一个程序至少有一个进程,一个进程至少有一个线程.

2) 线程的划分尺度小于进程,使得多线程程序的并发性高。

3) 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。

4) 但是线程不能够独立执行必须依存在应用程序中,由应用程序提供多个线程执行控制。

 

3.2 Python里的线程(threading模块) 

线程调用的方法2种:

函数调用

import threading, time


def fun(name):  # 定义每个线程要运行的函数

    print("%s running on fun" % name)

    time.sleep(2)


if __name__ == '__main__':  # 要运行的主程序,window下一定要写,作为导入模块时不执行后面的代码

    t1 = threading.Thread(target=fun, args=(1,))  # 生成一个线程实例
    t2 = threading.Thread(target=fun, args=(2,))  # 生成另一个线程实例

    t1.start()  # 启动线程
    t2.start()  # 启动另一个线程

    print(t1.getName())  # 获取线程名
    print(t2.getName())
View Code

相关文章:

  • 2021-05-14
猜你喜欢
  • 2021-12-20
  • 2021-11-07
  • 2022-12-23
  • 2021-10-22
  • 2022-02-02
  • 2022-12-23
  • 2021-09-22
相关资源
相似解决方案