码迷,mamicode.com
首页 > 其他好文 > 详细

1 多任务fork

时间:2017-12-02 17:55:49      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:coding   import   ppi   ==   src   alt   style   else   int   

1.如下程序,来模拟“唱歌跳舞”这件事情

#-*- coding:utf-8 -*- 

import time

def sing():
    """唱歌3次,每次休息1s"""
    for i in range(3):
        print("he is singing..%s."%i)
        time.sleep(1)

def dance():
    """跳舞3次每次修养1s"""
    for i in range(3):
        print("he is dancing...%s"%i)
        time.sleep(1)

if __name__ == "__main__":
    sing()
    dance()

 

he is singing..0.
he is singing..1.
he is singing..2.
he is dancing...0
he is dancing...1
he is dancing...2

 

!!!注意

  • 很显然刚刚的程序并没有完成唱歌和跳舞同时进行的要求
  • 如果想要实现“唱歌跳舞”同时进行,那么就需要一个新的方法,叫做:多任务

 

技术分享图片

 

2.进程的创建-fork

  1.) 进程 VS 程序

  编写完毕的代码,在没有运行的时候,称之为程序

  正在运行着的代码,就成为进程

  进程,除了包含代码以外,还有需要运行的环境等,所以和程序是有区别的

  2). fork( ) 创建子进程

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

    技术分享图片

 

  3.) getpid()、getppid()

import os

ret = os.fork()
print(ret)

if ret > 0 :
    print("---父进程- %d-"%os.getpid())

else:
    print("---子进程--%d--%d"%(os.getpid(),os.getppid()))

 

2241
---父进程- 2240-
0
---子进程--2241--2240

 

 

说明:

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

 

   4)父子进程的先后顺序

import os
import time

ret = os.fork()
if ret == 0 :
    print("---子进程--")
    time.sleep(5)
    print("---子进程 over")
else:
    print("---父进程--")
    time.sleep(3)

print("---程序 over")
---父进程--
---子进程--
---程序 over
python@ubuntu:~/python06/03-多任务$ ---子进程 over
---程序 over

 

1 多任务fork

标签:coding   import   ppi   ==   src   alt   style   else   int   

原文地址:http://www.cnblogs.com/venicid/p/7954503.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!