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

Python中如何并发执行多个任务

发布时间:2023-12-18 11:22:40

在Python中实现并发执行多个任务的方法有多种,可以使用多线程、多进程、协程等技术来实现。

1. 使用多线程:

多线程是Python最常用的并发执行任务的方法之一。可以使用threading模块来创建和管理多个线程,并通过线程的start()方法来启动线程。以下是一个使用多线程并发执行任务的示例代码:

import threading

def task1():
    #       个任务
    for i in range(10):
        print("Task 1 - Iteration {}".format(i+1))

def task2():
    # 第二个任务
    for i in range(10):
        print("Task 2 - Iteration {}".format(i+1))

if __name__ == "__main__":
    # 创建两个线程
    t1 = threading.Thread(target=task1)
    t2 = threading.Thread(target=task2)
    
    # 启动线程
    t1.start()
    t2.start()
    
    # 等待线程结束
    t1.join()
    t2.join()

    print("All tasks completed.")

运行上述代码,会同时执行两个任务,并在控制台上交替输出每个任务的迭代值。使用多线程可以很方便地实现并发执行多个任务,但需要注意线程间的同步和数据共享问题。

2. 使用多进程:

多进程也是Python中实现并发执行任务的一种方式。可以使用multiprocessing模块来创建和管理多个进程,并通过进程的start()方法来启动进程。以下是一个使用多进程并发执行任务的示例代码:

import multiprocessing

def task1():
    #       个任务
    for i in range(10):
        print("Task 1 - Iteration {}".format(i+1))

def task2():
    # 第二个任务
    for i in range(10):
        print("Task 2 - Iteration {}".format(i+1))

if __name__ == "__main__":
    # 创建两个进程
    p1 = multiprocessing.Process(target=task1)
    p2 = multiprocessing.Process(target=task2)

    # 启动进程
    p1.start()
    p2.start()

    # 等待进程结束
    p1.join()
    p2.join()

    print("All tasks completed.")

运行上述代码,会同时执行两个任务,并在控制台上交替输出每个任务的迭代值。使用多进程可以实现真正意义上的并行执行多个任务,但进程间的数据共享需要使用multiprocessing模块提供的QueuePipe等IPC机制。

3. 使用协程:

协程是一种轻量级的并发编程方式,通过使用asyncio模块的协程特性来实现任务的并发执行。以下是一个使用协程并发执行任务的示例代码:

import asyncio

async def task1():
    #       个任务
    for i in range(10):
        print("Task 1 - Iteration {}".format(i+1))
        await asyncio.sleep(1)  # 模拟耗时操作

async def task2():
    # 第二个任务
    for i in range(10):
        print("Task 2 - Iteration {}".format(i+1))
        await asyncio.sleep(1)  # 模拟耗时操作

if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    tasks = asyncio.gather(task1(), task2())
    loop.run_until_complete(tasks)

    print("All tasks completed.")

运行上述代码,会同时执行两个任务,并在控制台上交替输出每个任务的迭代值。在协程中,使用await关键字可以挂起当前任务,让其他任务有机会继续执行。协程可以利用Python的异步IO模型来实现高效的并发执行任务。

除了上述方法,还可以使用第三方库如concurrent.futuresgevent等来实现并发执行任务。根据具体的场景和需求,选择合适的并发执行方式可以帮助提高程序的性能和效率。