欢迎访问宙启技术站
智能推送

Python多进程编程:常用函数和示例

发布时间:2023-06-25 14:17:13

Python多进程编程是一种并发编程的方法,可以有效地提高程序的运行效率和性能。在Python中,有许多多进程编程的相关函数和方法,需要掌握这些函数和方法才能更加高效地编写并发程序。本文将介绍Python多进程编程中的常用函数和示例,帮助读者快速掌握Python多进程编程的基础知识。

1. Process函数

Process函数是Python中多进程编程中最基础的函数,用于创建一个新的进程。其语法结构如下:

Process(target=xxxx, args=(), kwargs={}, name="")

其中,

target:指定新进程所要执行的函数或方法;

args:传递给target函数的参数,必须以元组形式指定,如果只有一个元素必须使用逗号隔开;

kwargs:传递给target函数的关键字参数,必须以字典形式指定;

name:指定新进程的名称。

例如:

from multiprocessing import Process

def func(name):

    print(f"当前进程名为{name}")

if __name__ == '__main__':

    p1 = Process(target=func, args=("p1", ))

    p1.start()

    p1.join()

2. Queue函数

Queue函数是Python中多进程编程中常用的函数之一,用于创建一个线程安全的队列。队列是多进程编程中常用的通信方式之一,可以在多个进程间传递数据,保证数据的安全性和可靠性。其语法结构如下:

Queue(maxsize=0)

其中,

maxsize:指定队列的最大长度,如果maxsize小于或等于0,则队列的长度没有限制;

例如:

from multiprocessing import Process, Queue

def func(q):

    if not q.empty():

        data = q.get()

        print(f"当前取出的数据为{data}")

if __name__ == "__main__":

    q = Queue()

    for i in range(5):

        q.put(i)

    process_list = []

    for i in range(3):

        process_list.append(Process(target=func, args=(q,)))

    for process in process_list:

        process.start()

    for process in process_list:

        process.join()

3. Pool函数

Pool函数是Python多进程编程中常用的函数之一,用于创建一个进程池,可以同时启动多个进程执行同一个函数。进程池可以提高程序的并发性,提高程序的运行效率。其语法结构如下:

Pool(processes=None, initializer=None, initargs=(), maxtasksperchild=None)

其中,

processes:指定进程池的最大进程数,默认为CPU的核心数;

initializer:指定进程池中每个进程启动前调用的函数;

initargs:传递给初始化函数的参数,必须以元组的形式指定;

maxtasksperchild:指定每个进程可以执行的最大任务数。

例如:

import os

from multiprocessing import Pool

def func(name):

    print(f"当前进程名为{name},pid为{os.getpid()}")

if __name__ == "__main__":

    p = Pool(3)

    p.apply_async(func, args=("p1", ))

    p.apply_async(func, args=("p2", ))

    p.apply_async(func, args=("p3", ))

    p.close()

    p.join()

4. Manager函数

Manager函数是Python多进程编程中常用的函数之一,用于创建一个进程共享的对象,可以在多个进程间共享数据。其语法结构如下:

Manager()

例如:

from multiprocessing import Process, Manager

def func(d, l):

    d[os.getpid()] = os.getpid()

    l.append(os.getpid())

if __name__ == "__main__":

    with Manager() as manager:

        d = manager.dict()

        l = manager.list()

        p_list = []

        for i in range(5):

            p_list.append(Process(target=func, args=(d, l)))

        for p in p_list:

            p.start()

        for p in p_list:

            p.join()

    print(d)

    print(l)

综上所述,Python多进程编程中常用函数和示例有Process函数、Queue函数、Pool函数和Manager函数等。这些函数可以帮助我们更加高效地进行并发编程,提高程序的运行效率和并发性。