进程的创建

进程创建方法一:

import os

ret = os.fork()

if ret > 0:   //返回值大于0,说明是父进程

  print("this is father")

elif ret == 0:  //返回值等于0,说明是子进程

  print("this is son")

else :          //返回值小于0,创建失败

  print("create failed")

 

fork()创建进程时,返回值为pid,pid==0的是子进程,子进程的pid必须返回给父进程。

在子进程退出时,父进程需要调用wait()/waitpid()来释放子进程的资源,防止僵尸进程。

主进程的退出不会影响子进程的退出,直到子进程执行完自动退出。

这种创建方式不可以跨平台,python不使用。

 

 

进程创建方法二:

from multiprocessing import Process  

def test():

  print("hello")

p = Process(target = test)  //创建进程对象,指定执行的函数,并可以传递参数args=()。

p.start() //启动进程

p.join()  //父进程会阻塞,直到子进程执行完毕。

 

 

进程创建方法三:

import os

import time

from multiprocessing import Process

class NewProcess(Process): #继承Process类创建一个新类

  def __init__(self,num):

    self.num = num

    super().__init__()

  def run(self): #重写Process类中的run方法.

    while True:

      print('我是进程%d,我的pid是:%d'%(self.num,os.getpid()))

      time.sleep(1)

for i in range(2):

  p = NewProcess(i)

  p.start()

一个类继承Process,重写类中的run()方法,在执行start()时,就会执行run()

 

进程创建方法四:

from multiprocessing import Pool

def worker():

  print("hello")

pool = Pool(3)  //定义进程池的大小

pool.apply_async(target = worker)  //非阻塞方式调用worker(), apply()阻塞方式调用。

pool.close()  //关闭进程池,不在接收新的任务

pool.join()  //等待所有子进程执行完毕,主进程退出。

posted @ 2017-10-22 21:00  我为Xin媛学Python  阅读(191)  评论(0)    收藏  举报