centos

CentOS下Python脚本如何实现并发处理

小樊
36
2025-08-25 00:38:04
栏目: 编程语言

在CentOS系统下,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, ProcessPoolExecutor

def worker(num):
    """任务函数"""
    print(f"Worker: {num}")

# 使用线程池
with ThreadPoolExecutor(max_workers=5) as executor:
    for i in range(5):
        executor.submit(worker, i)

# 使用进程池
with ProcessPoolExecutor(max_workers=5) as executor:
    for i in range(5):
        executor.submit(worker, i)

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())

5. 使用gevent

gevent是一个基于协程的Python网络库,通过monkey patching实现并发。

首先,安装gevent

pip install gevent

然后,编写脚本:

from gevent import monkey; monkey.patch_all()
import gevent

def worker(num):
    """协程任务"""
    print(f"Worker: {num}")
    gevent.sleep(1)

jobs = [gevent.spawn(worker, i) for i in range(5)]
gevent.joinall(jobs)

总结

选择哪种方法取决于你的具体需求:

根据你的任务类型和性能需求,选择最合适的方法来实现并发处理。

0
看了该问题的人还看了