- A+
什么叫“多任务”呢?简单地说,就是操作系统可以同时运?多个任务。比如?边在?浏览器上?,?边在听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下都可以创建进程的方法,
- 我的微信
- 这是我的微信扫一扫
-
- 我的微信公众号
- 我的微信公众号扫一扫
-



