Python3 使用多个进程运行

在Python3中,我们可以使用multiprocessing模块来实现多个进程的并行运行。多进程可以提高程序的运行效率,尤其是对于那些需要大量计算的程序来说,使用多进程可以充分利用计算机的多核处理器,加快程序的运行速度。

使用multiprocessing模块创建多个进程

下面是一个简单的例子,演示如何使用multiprocessing模块来创建多个进程并运行:

import multiprocessing

def worker(num):
    print(f"Worker: {num}")

if __name__ == "__main__":
    processes = []
    for i in range(5):
        p = multiprocessing.Process(target=worker, args=(i,))
        processes.append(p)
        p.start()

    for p in processes:
        p.join()
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.

在这个例子中,我们定义了一个worker函数,然后使用multiprocessing.Process创建了5个进程,并分别传入不同的参数。然后通过start方法启动这些进程,最后通过join方法等待所有进程执行完毕。

示例

接下来,我们通过一个简单的示例来演示如何使用多进程并行计算的效果。假设我们有一个需要大量计算的任务,比如计算斐波那契数列的第n个数。

import multiprocessing

def fib(n):
    if n <= 1:
        return n
    else:
        return fib(n-1) + fib(n-2)

if __name__ == "__main__":
    n = 35
    processes = []
    for i in range(5):
        p = multiprocessing.Process(target=fib, args=(n,))
        processes.append(p)
        p.start()

    for p in processes:
        p.join()
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.

在这个示例中,我们定义了一个递归的斐波那契数列计算函数fib,然后创建了5个进程来并行计算第35个斐波那契数。通过多进程的方式,可以明显加快计算速度。

甘特图

下面是一个简单的甘特图,展示了上面示例中5个进程的并行运行情况:

gantt
    title 多进程并行计算示例
    dateFormat  YYYY-MM-DD
    section 任务
    进程1: active, 2022-01-01, 1d
    进程2: active, after 进程1, 1d
    进程3: active, after 进程2, 1d
    进程4: active, after 进程3, 1d
    进程5: active, after 进程4, 1d

饼状图

最后,我们可以通过一个简单的饼状图来展示上面示例中5个进程的运行时间比例:

进程运行时间比例 20% 20% 20% 20% 20% 进程运行时间比例 进程1 进程2 进程3 进程4 进程5

通过多进程并行计算,可以提高程序的运行效率,加快计算速度,提高计算机资源的利用率。在处理大规模计算任务时,多进程可以发挥重要作用,是程序优化的一种重要手段。希望本文对您有所帮助,谢谢阅读!