【python3】tornado高性能编程

  • 使用多进程充分利用cpu
  • 使用异步编程 asyncio
python 复制代码
import asyncio
import time
from abc import ABC
from concurrent.futures import ProcessPoolExecutor
from tornado import web, ioloop, gen


async def async_task(name):
    print(f"start: {name}")
    st = int(time.time())
    time.sleep(3)  # 模拟同步等待 
    await asyncio.sleep(3)  # 模拟异步等待
    result = f"task: {name}, start: {st}, end: {int(time.time())}"
    return result


def run_async_task(name):
    return asyncio.run(async_task(name))


class MainHandler(web.RequestHandler, ABC):
    executor = ProcessPoolExecutor()  # 进程池

    @gen.coroutine
    def get(self):
        task_name = self.get_argument("task", "task-1")
        result = yield self.executor.submit(run_async_task, task_name)
        self.write(result)


def make_app():
    return web.Application([
        (r"/", MainHandler),
    ])


if __name__ == '__main__':
    app = make_app()
    app.listen(8888)
    print("http://localhost:8888/?task=task-X")
    ioloop.IOLoop.current().start()
相关推荐
飞Link8 小时前
【MySQL】Linux(CentOS7)下安装MySQL8教程
linux·数据库·mysql
数据库生产实战9 小时前
Oracle的_segment_count和3个event对高并发事务与索引性能的影响分析
数据库·oracle
程序员侠客行9 小时前
Mybatis二级缓存实现详解
java·数据库·后端·架构·mybatis
Tipriest_9 小时前
linux中的文本分接流tee命令介绍
linux·服务器·数据库
爱喝水的鱼丶9 小时前
SAP-ABAP:在SAP世界里与特殊字符“斗智斗勇”:一份来自实战的避坑指南
运维·服务器·数据库·学习·sap·abap·特殊字符
阿拉伯柠檬10 小时前
MySQL内置函数
linux·数据库·mysql·面试
小Mie不吃饭10 小时前
2025 Oracle小白零基础到入门的学习路线
数据库·oracle
麒qiqi10 小时前
SQLite3 数据库
数据库·oracle
不吃橘子的橘猫10 小时前
NVIDIA DLI 《Build a Deep Research Agent》学习笔记
开发语言·数据库·笔记·python·学习·算法·ai
程序 代码狂人10 小时前
DML,DDL,DCL,TCL
数据库