python2 通过 multiprocessing 创建 Python 进程

 Pala   2017-11-10 19:06   198 人阅读  0 条评论

在 Python 中,multiprocessing 模块包含的 API,可以允许我们直接在 Python 代码中,将一段 Python 代码单独的作为独立进程运行。

这就相当于在一个程序中,创建第二个进程,也是我们真正需要研究的“进程编程”。下面我们首先使用它,来编写一些最简单,最基本的进程程序。

multiprocessing

创建进程

首先,我们需要定义一个函数,作为要启动的第二个进程:

def func():
    print 'Fuvism Multiprocessing'
    return

其次,通过 multiprocessing 以第二个进程的方式,启动 func() 函数,这样函数就不会在当前进程(正在执行的程序中)运行了。

import multiprocessing
p = multiprocessing.Process(target=func)
p.start()

说明:

使用 Process 来创建,其中参数 target 是必填的,只需要指定函数名即可(不需要括号)

创建后,必须通过 start() 函数来启动,否则将不会运行

这只是简单的创建一个进程,这里的进程是怎么和主进程区别的,怎么看的出来?继续->

使用 multiprocessing 创建进程

首先,我们看看怎么区别到底是不是启动了第二个进程。

这里需要使用 os.getpid() 获取当前进程自身的 PID(进程号)。

# filename: test.py

import os
import multiprocessing

def func():
    print 'sub process pid=', os.getpid()   # 输出我们创建的子进程号
    print 'Fuvism Multiprocessing'
    return


print 'master process pid=', os.getpid()  # 输出 Python 主进程的进程号
p = multiprocessing.Process(target=func)
p.start()    # 启动子进程

这里同时输出两个进程号,一个是主进程的,也就是执行 Python 的时候( python test.py) 的进程号,一个是子进程的(func)进程号。

输出:

master process pid= 124011
sub process pid= 124012
Fuvism Multiprocessing

看到两个 PID 不一样,当然一个进程中不可能有两个不同的进程号,那就说明这里有两个进程。

当然可以通过 Linux 命令 ps aux 来验证,可以自己尝试下(需要加 time.sleep 来延迟,不然太快看不出来)。

至此,我们对 Python 如何使用进程有了一定的认识,但实际工作中,需求比这里要负责,多样,这也是我们后面多进程将要研究的重点。


本文地址:http://chenxm.cc/post/477.html
版权声明:本文为原创文章,版权归 Pala 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?