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

相关推荐
过期动态几秒前
Java开发中的@EnableWebMvc注解和WebMvcConfigurer接口
java·开发语言·spring boot·spring·tomcat·maven·idea
CoLiuRs几秒前
语义搜索系统原理与实现
redis·python·向量·es
zhihuaba3 分钟前
使用PyTorch构建你的第一个神经网络
jvm·数据库·python
u0109272714 分钟前
Python Web爬虫入门:使用Requests和BeautifulSoup
jvm·数据库·python
Hi_kenyon7 分钟前
理解vue中的ref
前端·javascript·vue.js
csbysj202022 分钟前
Web 标准
开发语言
老姚---老姚38 分钟前
在windows下编译go语言编写的dll库
开发语言·windows·golang
diediedei1 小时前
模板编译期类型检查
开发语言·c++·算法
Stream_Silver1 小时前
【Agent学习笔记3:使用Python开发简单MCP服务】
笔记·python
穿过锁扣的风1 小时前
零基础入门 Python 爬虫:从基础到实战,爬取虎扑 / 豆瓣 / 图片全掌握
开发语言·爬虫·python