python多线程开发

python 复制代码
import asyncio
from concurrent.futures import ThreadPoolExecutor

class WorkJob:
    async def run(self):
        await asyncio.gather(
            self.function1(),
            self.function2(),
        )

async def run_in_thread(job):
    loop = asyncio.get_event_loop()
    with ThreadPoolExecutor() as executor:
        await loop.run_in_executor(executor, job.run)

async def main():
    jobs = [WorkJob(), WorkJob()]  # Add more jobs as needed
    await asyncio.gather(
        *[run_in_thread(job) for job in jobs]
    )

# Running the event loop
if __name__ == "__main__":
    asyncio.run(main())

以上是一个实现多线程并行工作的代码。具体来说,ThreadPoolExecutor 允许多个线程并行运行任务,而 asynciorun_in_executor 函数会将异步任务 offload 到线程池中的线程执行。因此,多个 WorkJob().run() 实例会被分配到不同的线程并行运行。

代码解析:

  1. ThreadPoolExecutor 创建了一个线程池
  2. loop.run_in_executorWorkJob().run() 的执行 offload 到线程池,从而并行运行。
  3. asyncio.gather 确保多个任务能够同时被调度。

在这种方式下,不同线程可以独立工作,因此可以更有效地处理 I/O 密集型任务或者需要并发的操作。

相关推荐
乐观勇敢坚强的老彭11 分钟前
2026全国青少年信息素养大赛考纲
python·数学建模
桦030 分钟前
【C++复习】:继承
开发语言·c++
YMWM_1 小时前
【问题】thor上的cubLas
linux·python·thor
何仙鸟1 小时前
GarmageSet下载和处理
java·开发语言
wefly20171 小时前
免安装!m3u8live.cn在线 M3U8 播放器,小白也能快速上手
java·开发语言·python·json·php·m3u8·m3u8在线转换
2401_873544921 小时前
使用Python进行PDF文件的处理与操作
jvm·数据库·python
爱学习的程序媛1 小时前
【Web前端】JavaScript设计模式全解析
前端·javascript·设计模式·web
小码哥_常1 小时前
从SharedPreferences到DataStore:Android存储进化之路
前端
程序员小远1 小时前
软件测试常见Bug清单
自动化测试·软件测试·python·功能测试·测试工具·测试用例·bug