400-650-7353

精品课程

您所在的位置:首页 > IT干货资料 > python > 【Python基础知识】进程和线程

【Python基础知识】进程和线程

  • 发布: 优就业it培训
  • 来源:
  • 2021-10-29 14:59:37
  • 阅读()
  • 分享
  • 手机端入口

1、多任务操作系统

Windows、Linux和Mac OS等一些常用的操作系统都是多任务操作系统。其中,多任务是指操作系统可以同时运行多个任务。例如,用户使用Windows操作系统可以一边用浏览器上网查阅资料,一边用音乐播放器听歌,一边用PowerPoint制作幻灯片,这就是多任务。多任务至少有3个任务在操作系统中同时运行,与此同时还有一些任务在后台运行着,只是这些任务没有显示在桌面上而已。

基于摩尔定律,近年来CPU技术得到了飞速地发展,现在多核CPU已经成为计算机的“标配”。然而,即使在多年前使用单核CPU,Windows操作系统本身就是多任务操作系统。多任务操作系统的CPU是顺序执行代码的,那么单核CPU执行多任务就需要时分复用,即操作系统轮流让各个任务交替执行。例如,操作系统中同时有3个任务,任务1执行0.01秒,切换到任务2;任务2执行0.01秒,切换到任务3;任务3执行0.01秒,切换到任务1;任务1执行0.01秒,切换到任务2……这样反复循环执行下去。实际上,在单核CPU中,每个任务都是交替执行的,但是由于CPU的主频大多数以吉赫兹为单位,执行速度极快,用户在使用计算机时,是感觉不到时间间隔的,因此,用户使用计算机时就像所有任务都在同时执行一样。

真正地同时运行多任务只能在多核CPU上实现,但由于CPU的核心数量远远小于任务的数量,因此,目前操作系统依旧效仿单核CPU时的策略,也会自动将很多任务轮流调度到每个核心上运行。

2、进程与线程

在操作系统中,一个任务就是一个进程(Process)。例如,打开一个浏览器就是启动了一个浏览器进程,打开一个播放器就启动了一个播放器进程,打开两个Word文档就启动了两个Word进程。

有些进程可能会同时做多件事,如Word可以同时进行打字、拼写检查、打印等。在一个进程内部,多件事需要同时做,那么多个子任务就需要同时运行,这些子任务称为线程(Thread)。

一个进程至少有一个线程,这是因为一个进程至少要做一件事。如上例所述的Word进程可以有多个线程,而且多个线程可以同时运行。与多进程类似,多线程的运行方式也是由操作系统在多个线程之间进行快速切换。在操作系统中每个线程都短暂地交替运行,而对于用户而言,看起来就像同时在运行一样。当然,基于多核CPU能够真正地同时运行多线程。

3、多进程与多线程

前文中编写的Python程序,都是执行单任务的进程,而且只有一个线程。如果多个任务要同时执行怎么办?实际中有以下两种常用的解决方案:

①多进程,即启动多个进程,多个进程可以同时执行多个任务(注意,此处每个进程只有一个线程)。

②多线程,即只启动一个进程,在这个进程中启动多个线程,这样多个线程也可以同时执行多个任务。

除此之外,还可以采用混合模式,即先启动多个进程,每个进程再启动多个线程。但由于这种模式比以上两种更复杂,实际中很少采用。

执行多任务时,通常各个任务之间是有关联的,需要相互通信和协调。例如,有多个任务,任务1有时必须暂停等待任务2完成后才能继续执行,任务3和任务4有时又不能同时执行,因此,实现的复杂度要远远高于单进程单线程的程序。

即使多进程或多线程的程序复杂度高且调试困难,但现实中很多情况都需要设计多任务框架才能解决问题。例如,在手机上看电影时,播放器进程中就必须有一个线程播放视频,另一个线程播放音频,否则,如果采用单线程来实现,那么就只能先将视频播放完再播放音频,或者先将音频播放完再播放视频,这对用户而言显然是不可接受的。

总而言之,多任务可以由多进程完成,也可以由一个进程内的多线程完成。如何调度进程和线程,完全由操作系统决定,Python程序自己不能决定什么时候执行,执行多长时间。多进程和多线程的程序涉及同步、数据共享等问题,编写起来比较复杂。

Python既支持多进程,又支持多线程,下面会介绍编写这两种多任务程序的方法。

学习疑问申请解答
您的姓名
您的电话
意向课程
 

中公优就业

IT小助手

扫描上方二维码添加好友,请备注:599,享学习福利。

>>本文地址:
注:本站稿件未经许可不得转载,转载请保留出处及源文件地址。

推荐阅读

优就业:ujiuye

关注中公优就业官方微信

  • 关注微信回复关键词“大礼包”,享学习福利
QQ交流群
在线疑问解答
(加群备注“网站”)
IT培训交流群 加入群聊 +
软件测试 加入群聊 +
全链路UI/UE设计 加入群聊 +
Python+人工智能 加入群聊 +
互联网营销 加入群聊 +
Java开发 加入群聊 +
PHP开发 加入群聊 +
VR/AR游戏开发 加入群聊 +
大前端 加入群聊 +
大数据 加入群聊 +
Linux云计算 加入群聊 +
优就业官方微信
扫码回复关键词“大礼包”
享学习福利

测一测
你适合学哪门IT技术?

1 您的年龄

2 您的学历

3 您更想做哪个方向的工作?

获取测试结果
 
课程资料、活动优惠 领取通道