ubuntu

Ubuntu Python脚本如何实现并发执行

小樊
40
2025-06-15 08:52:01
栏目: 编程语言

在Ubuntu上使用Python实现并发执行,可以通过多种方式来完成。以下是几种常见的方法:

1. 使用 threading 模块

threading 模块允许你创建和管理线程。

import threading

def worker(num):
    """线程要执行的函数"""
    print(f"Worker: {num}")

threads = []
for i in range(5):
    thread = threading.Thread(target=worker, args=(i,))
    threads.append(thread)
    thread.start()

for thread in threads:
    thread.join()

2. 使用 multiprocessing 模块

multiprocessing 模块允许你创建和管理进程,适用于CPU密集型任务。

import multiprocessing

def worker(num):
    """进程要执行的函数"""
    print(f"Worker: {num}")

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

    for process in processes:
        process.join()

3. 使用 concurrent.futures 模块

concurrent.futures 模块提供了一个高级接口来实现并发执行,支持线程池和进程池。

线程池示例

from concurrent.futures import ThreadPoolExecutor

def worker(num):
    """线程要执行的函数"""
    print(f"Worker: {num}")

with ThreadPoolExecutor(max_workers=5) as executor:
    futures = [executor.submit(worker, i) for i in range(5)]
    for future in concurrent.futures.as_completed(futures):
        pass

进程池示例

from concurrent.futures import ProcessPoolExecutor

def worker(num):
    """进程要执行的函数"""
    print(f"Worker: {num}")

if __name__ == "__main__":
    with ProcessPoolExecutor(max_workers=5) as executor:
        futures = [executor.submit(worker, i) for i in range(5)]
        for future in concurrent.futures.as_completed(futures):
            pass

4. 使用 asyncio 模块

asyncio 模块适用于I/O密集型任务,通过协程实现并发。

import asyncio

async def worker(num):
    """协程要执行的函数"""
    print(f"Worker: {num}")
    await asyncio.sleep(1)

async def main():
    tasks = [worker(i) for i in range(5)]
    await asyncio.gather(*tasks)

asyncio.run(main())

总结

选择哪种方法取决于你的具体需求和任务的性质。

0
看了该问题的人还看了