python之多任务,进程(fork)

  • A+
所属分类:python基础入门

多任务

什么叫“多任务”呢?简单地说,就是操作系统可以同时运?多个任务。比如?边在?浏览器上?,?边在听MP3,?边在?Word写文档,这就 是多任务,?少同时有3个任务正在运?。还有很多任务悄悄地在后台同时运 ?着,只是桌?上没有显示?已。

时间片轮转

现在,多核CPU已经?常普及了,但是,即使过去的单核CPU,也可以执? 多任务。由于CPU执?代码都是顺序执?的,那么,单核CPU是怎么执?多 任务的呢? 答案就是操作系统轮流让各个任务交替执?,任务1执?0.01秒,切换到任务 2,任务2执?0.01秒,再切换到任务3,执?0.01秒……这样反复执?下去。 表?上看,每个任务都是交替执?的,但是,由于CPU的执?速度实在是太 快了,我们感觉就像所有任务都在同时执??样。

真正的并?执?多任务只能在多核CPU上实现,但是,由于任务数量远远多 于CPU的核?数量,所以,操作系统也会?动把很多任务轮流调度到每个核 ?上执?。

进程

进程是指在操作系统中正在运行的一个应用程序,

Fork()

Python的os模块封装了常?的系统调?,其中就包括fork,可以在Python程 序中轻松创建?进程:

# 注意,fork()函数,只在Unix/Linux/Mac上运?,windows不可以

import os

ret =os.fork() #创建进程

print ("test")

if ret>0: #子进程的ret为0 ,父进程不为 0

print "父进程"

esle :

print "子进程"

程序执?到os.fork()时,操作系统会创建?个新的进程(?进程),然后 复制?进程的所有信息到?进程中 然后?进程和?进程都会从fork()函数中得到?个返回值,在?进程中这 个值?定是0,??进程中是?进程的 id号

提供了?个fork()系统函数,它?常特殊。 普通的函数调?,调??次,返回?次,但是fork()调??次,返回两次,因 为操作系统?动把当前进程(称为?进程)复制了?份(称为?进程),然 后,分别在?进程和?进程内返回。 ?进程永远返回0,??进程返回?进程的ID。 这样做的理由是,?个?进程可以fork出很多?进程,所以,?进程要记下 每个?进程的ID,??进程只需要调?getppid()就可以拿到?进程的ID。

多级fork

os.fork()

os.fork()

os.fork()

会出现8个进程

ret=Os.fork()

If ret ==0:

Os.fork()

Else:

Print “#######”

会出现3个进程,在fork?进程、?进程执?顺序没有规律,完全取决于操作系统的调度算法

**由于windows下fork不能使用,虚拟机还没来得及安装,这里就不演示fork的例子了,下次介绍在linux、mac和windows下都可以创建进程的方法,

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: