商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > Python在Ubuntu上的并发编程

Python在Ubuntu上的并发编程

  发布于2026-07-04 阅读(0)

扫一扫,手机访问

在Ubuntu上搞Python并发编程,说起来选项不少,但每个方案的适用场景和背后的坑,得先捋清楚。标准库给了三个核心工具——threadingmultiprocessingasyncio,外加geventeventlet这类第三方利器。怎么选?关键看你手里的任务是CPU密集型还是I/O密集型。

Python在Ubuntu上的并发编程

先说threading。它操作简单,直接创建线程对象就行。但注意,Python有GIL(全局解释器锁),多线程在CPU密集场景下其实是串行的——一个线程占着解释器不放,其他线程干瞪眼。所以threading更适合I/O密集型任务,比如网络请求、文件读写,这时候线程切换的开销完全可以接受。

import threading

def my_function(arg):
    # 线程要干的事
    pass

thread = threading.Thread(target=my_function, args=(arg,))
thread.start()
thread.join()

如果你的任务是CPU密集型的,比如大量计算、图像处理,那得祭出multiprocessing。每个进程都有自己的解释器和内存空间,直接绕开GIL,实现真正的并行。创建进程和线程的API几乎一样,但开销更大——进程间通信、内存消耗都得算进去。

from multiprocessing import Process

def my_function(arg):
    # 进程要干的事
    pass

process = Process(target=my_function, args=(arg,))
process.start()
process.join()

再来看asyncio,Python 3.4引入的异步并发方案。它只在单线程里跑,靠事件循环调度协程,适合海量I/O请求的场景(比如爬虫、Web服务)。代码写起来像同步逻辑,但底层是非阻塞的。注意版本差异:Python 3.7及以上直接用asyncio.run(),干净利落;如果你还在用3.6,得手动创建事件循环,稍显啰嗦。

import asyncio

async def my_coroutine(arg):
    # 协程逻辑
    pass

# Python 3.7+
asyncio.run(my_coroutine(arg))

# Python 3.6 手动事件循环
loop = asyncio.get_event_loop()
try:
    loop.run_until_complete(my_coroutine(arg))
finally:
    loop.close()

使用这些模块前,确保你的Ubuntu上Python环境到位。没装的话,一行命令搞定:

sudo apt update
sudo apt install python3 python3-pip

遇到更复杂的并发需求?第三方库geventeventlet值得一看。它们基于协程,但让你用同步的写法写异步代码,对新手非常友好。安装只需pip:

pip install gevent  # 或者 eventlet

最后说一句选择原则:别盲目跟风。先搞清楚你的瓶颈在哪——是CPU算力不够,还是I/O等待太久?理清这个,再用对应的并发模型,才不会掉进GIL或进程开销的坑里。

本文转载于:https://www.yisu.com/ask/95079279.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注