python-Process子类创建进程

概述

python是 面向对象 的编程语言,可以通过 类 实现创建子进程。

当 子进程 需要实现 复杂功能 时,像之前那样,只一个函数是很难实现的,如果通过若干的函数,又不够优雅,就需要通过 类 来实现。

使用方法

定义一个 类,继承Process类,重写run()方法,实例化 后调用 start() 方法 启动进程。
就会创建一个 子进程 ,执行 run() 方法。

例子1

本案例中,主进程模拟老师批改卷子,需要耗时较长时间,老师渴了,创建 子进程 模拟小明烧水、倒水,也需要耗时一段时间,期间老师 一直 在批改卷子

# coding=utf-8

from multiprocessing import Process
import time

class MyProcess(Process):

    def run(self):
        print('小明去烧水')
        time.sleep(3)
        print('小明倒水回来了')

if __name__ == "__main__":
    print('老师批改卷子')

    print('派小明去倒水')
    p=MyProcess()
    p.start()
    for i in range(10):
        print('老师继续批改卷子')
        time.sleep(1)

例子2

本案例中,主进程模拟老师批改卷子,需要耗时较长时间,老师渴了,创建 子进程 模拟小明烧水、倒水,也需要耗时一段时间,期间老师 一直 等待,直到小明倒水回来后,才继续批改卷子

# coding=utf-8

from multiprocessing import Process
import time

class MyProcess(Process):

    def run(self):
        print('小明去烧水')
        time.sleep(3)
        print('小明倒水回来了')

if __name__ == "__main__":
    print('老师批改卷子')

    print('派小明去倒水')
    p=MyProcess()
    p.start()
    print('喝不上水就不批卷子,哼!')
    p.join()
    for i in range(10):
        print('老师继续批改卷子')
        time.sleep(1)

例子3

#coding=utf-8
import time
from multiprocessing import Process
import os

#打印进程id,父进程id
print('文件开始---,pid=%d,ppid=%d'%(os.getpid(),os.getppid()))

#自定义类,继承Process类
class MyProcess(Process):
    #重写Process类的run()方法
    def run(self):
        print('子进程开始,pid=%d,ppid=%d'%(os.getpid(),os.getppid()))
        time.sleep(5)
        print('子进程结束,pid=%d,ppid=%d'%(os.getpid(),os.getppid()))

#必须有下面这行代码,否则在windows下报错
if __name__ == "__main__":
    #打印进程id
    print('主进程开始,pid=%d,ppid=%d'%(os.getpid(),os.getppid()))
    #创建进程
    p=MyProcess()
    #启动进程
    p.start()
    # time.sleep(10)
    #子进程pid和name
    print('子进程pid=%d,name=%s'%(p.pid,p.name))
    print('主进程结束,pid=%d,ppid=%d'%(os.getpid(),os.getppid()))

原文出处:/show_1EF2nPm3HEyU.html