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 密集型任务或者需要并发的操作。

相关推荐
小高007几秒前
🔍说说对React的理解?有哪些特性?
前端·javascript·react.js
Samsong几秒前
JavaScript逆向之反制无限debugger陷阱
前端·javascript
Lotzinfly3 分钟前
8 个经过实战检验的 Promise 奇淫技巧你需要掌握😏😏😏
前端·javascript·面试
RoyLin4 分钟前
TypeScript设计模式:单例模式
前端·后端·node.js
小公主4 分钟前
我的第一个 React Flow 小实验
前端
RoyLin7 分钟前
TypeScript设计模式:工厂方法模式
前端·后端·node.js
掘金酱9 分钟前
🎉 2025年8月金石计划开奖公示
前端·人工智能·后端
Cache技术分享10 分钟前
191. Java 异常 - 捕获与处理异常
前端·后端
RoyLin11 分钟前
TypeScript设计模式:模板方法模式
前端·后端·node.js