multiprocessing

    如果你打算编写多进程的服务程序,Unix/Linux无疑是正确的选择。由于Windows没有 fork 调用,难道在Windows上无法用Python编写多进程的程序?

    由于Python是跨平台的,自然也应该提供一个跨平台的多进程支持。 multiprocessing 模块就是跨平台版本的多进程模块。

    multiprocessing 模块提供了一个 Process 类来代表一个进程对象,下面的例子演示了启动一个子进程并等待其结束:

    from multiprocessing import Process

    import os



    # 子进程要执行的代码

    def runproc(name):

    print('Run child process %s (%s)…' % (name, os.getpid()))



    if name=='_main
    ':

    print('Parent process %s.' % os.getpid())

    p = Process(target=run_proc, args=('test',))

    print('Child process will start.')

    p.start()

    p.join()

    print('Child process end.')

    执行结果如下:

    Parent process 928.

    Process will start.

    Run child process test (929)…

    Process end.

    创建子进程时,只需要传入一个执行函数和函数的参数,创建一个 Process 实例,用 start() 方法启动,这样创建进程比 fork() 还要简单。

    join() 方法可以等待子进程结束后再继续往下运行,通常用于进程间的同步。