当前位置: 首页 > article >正文

Python项目部署之Gunicorn知识详解

1. 引言在 Python Web 开发的世界里将开发好的应用部署到生产环境是一个至关重要的环节。我们常用的开发框架如 Flask、Django 都内置了简单的 WSGI 服务器但这些服务器仅适用于开发阶段因为它们性能低下、安全性不足且无法处理并发请求。GunicornGreen Unicorn应运而生它是一个用于 UNIX 系统的 Python WSGI HTTP 服务器广泛用于生产环境。它的设计目标是简单、稳定、高效能够帮助你轻松地将 Python Web 应用部署到生产环境。本教程将带你全面了解 Gunicorn从基础概念到高级调优帮助你成为一名真正的 Gunicorn 专家。2. Gunicorn 简介Gunicorn 是一个pre-fork的 WSGI 服务器。所谓 pre-fork指的是主进程Master在启动时会预先创建多个工作进程Worker这些工作进程负责处理实际的 HTTP 请求。这种模型具有以下优点稳定性如果一个工作进程崩溃主进程会重新启动一个新的工作进程不影响整体服务。并发处理多进程可以充分利用多核 CPU处理并发请求。兼容性完全兼容 WSGI 规范可以与任何 WSGI 应用Flask、Django、Pyramid 等无缝集成。Gunicorn 的设计哲学是“简单”它只专注于成为一个高效的 WSGI 服务器将静态文件处理、负载均衡等交给更专业的工具如 Nginx来完成。3. 核心概念3.1 WSGIWSGIWeb Server Gateway Interface是 Python 定义的一套 Web 服务器和 Web 应用之间的接口规范。它允许应用和服务器之间解耦使得同一个应用可以运行在任何 WSGI 兼容的服务器上比如 Gunicorn、uWSGI、Waitress 等。一个简单的 WSGI 应用是一个可调用对象函数或类接收两个参数environ, start_response并返回一个可迭代对象作为响应体。defsimple_app(environ,start_response):status200 OKheaders[(Content-type,text/plain)]start_response(status,headers)return[bHello, World!\n]Gunicorn 实现了 WSGI 服务器端负责将 HTTP 请求转换为 WSGI 调用并将应用的响应转换回 HTTP 响应。3.2 Pre-fork 模型Gunicorn 采用经典的 pre-fork 模型结构如下Master 进程负责管理 Worker 进程监听端口接收连接然后将连接分发给 Worker。它不处理任何请求仅负责监控和协调。Worker 进程实际处理请求的进程。每个 Worker 独立运行互不干扰它们可以是同步的或异步的。当 Master 启动时它会根据配置 fork 出指定数量的 Worker。Worker 会继承 Master 监听的 socket 文件描述符然后各自 accept 连接并处理请求。这种模型简单而高效广泛用于生产环境。3.3 工作模式Worker TypesGunicorn 支持多种工作模式通过worker-class参数指定。不同的模式决定了 Worker 如何处理请求。同步sync默认模式。每个 Worker 一次只能处理一个请求请求按顺序处理。适合 CPU 密集型应用或者应用本身已支持异步如 FastAPI、Tornado。异步async基于 Gevent 或 Eventlet 的异步 Worker可以并发处理多个请求适合 I/O 密集型应用如等待数据库查询、外部 API 调用。tornado使用 Tornado 框架的 IOLoop。asyncio使用 Python 3 内置的 asyncio 库适合基于 async/await 的应用如 FastAPI、aiohttp。选择合适的 Worker 类型对性能至关重要我们将在后续章节详细讨论。4. 安装与基础使用4.1 安装Gunicorn 可以通过 pip 轻松安装pipinstallgunicorn如果需要使用异步 Worker还需安装对应的依赖# 对于 geventpipinstallgunicorn[gevent]# 对于 eventletpipinstallgunicorn[eventlet]4.2 基础使用假设你有一个 Flask 应用app.py# app.pyfromflaskimportFlask appFlask(__name__)app.route(/)defhello():returnHello, Gunicorn!你可以通过以下命令启动 Gunicorngunicorn app:app这里app:app的含义是模块app中的 WSGI 应用变量app。Gunicorn 会查找该变量作为应用入口。默认情况下Gunicorn 会监听127.0.0.1:8000启动一个 Worker单进程。你可以通过浏览器访问http://127.0.0.1:8000查看效果。4.3 常用命令行选项Gunicorn 提供了丰富的命令行选项常用的有-w或--workers指定 Worker 进程的数量。通常建议设置为2 * CPU核心数 1。-b或--bind绑定地址和端口例如-b 0.0.0.0:8080。-k或--worker-class指定工作模式例如-k gevent。--timeout请求超时时间秒默认为 30 秒。--daemon以守护进程模式运行。--pidPID 文件路径。--access-logfile访问日志文件路径。--error-logfile错误日志文件路径。示例gunicorn-w4-b0.0.0.0:8000 app:app5. 配置详解Gunicorn 的配置可以通过三种方式指定命令行参数、环境变量、配置文件。推荐使用配置文件因为它更清晰、易于版本控制。5.1 配置文件配置文件是一个 Python 文件里面定义了变量名与配置选项对应。例如创建一个gunicorn.conf.py# gunicorn.conf.pybind0.0.0.0:8000workers4worker_classsynctimeout30accesslog./logs/access.logerrorlog./logs/error.logloglevelinfopidfile./gunicorn.piddaemonTrue# 守护进程然后启动gunicorn-cgunicorn.conf.py app:app5.2 常用配置选项详解核心选项bind监听的地址和端口可指定多个如[127.0.0.1:8000, unix:/tmp/gunicorn.sock]。workersWorker 进程数。公式workers 2 * CPU核心数 1是一个不错的起点。worker_class工作模式可选值sync默认、gevent、eventlet、tornado、gthread、asyncio需要额外库。threads对于gthread模式指定每个 Worker 的线程数。如果使用多线程Worker 数量可以适当减少。并发相关worker_connections对于异步 Workergevent/eventlet最大并发连接数默认 1000。max_requests每个 Worker 在重启前处理的最大请求数。可防止内存泄漏默认 0无限制。max_requests_jitter在max_requests基础上增加随机抖动避免所有 Worker 同时重启。keepaliveHTTP 长连接保持时间秒默认 2。对于静态资源服务器可适当增大。超时设置timeoutWorker 处理请求的超时时间超过该时间 Worker 会被强制重启。默认 30。graceful_timeoutWorker 收到重启信号后等待完成当前请求的时间默认 30。keepalive如上。日志与调试accesslog访问日志文件路径-表示输出到 stdout。errorlog错误日志文件路径。loglevel日志级别debug、info、warning、error、critical。capture_output是否将 stdout/stderr 重定向到错误日志默认 False。进程管理pidfilePID 文件路径。daemon是否以守护进程运行。user/groupWorker 进程运行的用户和组。umask文件权限掩码。SSL 支持Gunicorn 可以原生支持 SSL但通常建议由 Nginx 处理keyfile/path/to/key.pemcertfile/path/to/cert.pem5.3 环境变量Gunicorn 也支持通过环境变量配置格式为GUNICORN_CMD_ARGS例如exportGUNICORN_CMD_ARGS--bind0.0.0.0:8080 --workers4gunicorn app:app优先级命令行参数 环境变量 配置文件。6. 工作模式深入选择合适的 Worker 类型是性能优化的关键。下面深入分析各种工作模式。6.1 Sync Workers同步默认模式。每个 Worker 进程一次只能处理一个请求请求顺序执行。如果某个请求被阻塞如等待 I/O该 Worker 无法处理其他请求因此需要多个 Worker 来并发处理请求。适用场景CPU 密集型应用计算时间长但 I/O 少。应用本身已经是异步如 FastAPI由应用处理并发Gunicorn 只作为网关。应用简单并发要求不高。优点简单、稳定、资源消耗低。缺点无法处理长时间阻塞的 I/O 操作容易导致 Worker 耗尽。6.2 Async Workers异步Gunicorn 支持基于 Gevent 和 Eventlet 的异步 Worker。它们通过协程greenlet实现并发可以在一个 Worker 内同时处理多个请求。当一个请求等待 I/O如数据库查询、外部 API时Worker 会自动切换到其他请求从而大大提高 I/O 密集型应用的并发能力。安装pipinstallgunicorn[gevent]# 或 gunicorn[eventlet]配置worker_classgevent# 或 eventletworker_connections1000# 最大并发连接数适用场景I/O 密集型应用大量数据库访问、HTTP 请求。长连接、WebSocket。并发要求高但代码未使用异步语法asyncio。注意使用异步 Worker 时你的应用代码必须是非阻塞的否则协程无法切换。如果代码中使用了阻塞的库如requests需要替换为异步版本如aiohttp或使用monkey_patch进行猴子补丁。Gevent 会自动对标准库进行猴子补丁但有时需要显式调用fromgeventimportmonkey monkey.patch_all()确保补丁在应用导入之前执行。可以在 Gunicorn 配置中通过preload_app和钩子实现。6.3 Asyncio WorkersPython 3.4 引入了 asyncioGunicorn 也提供了基于 asyncio 的 Workerworker_class asyncio需要安装gunicorn[asyncio]。它使用asyncio事件循环处理请求适合 FastAPI、aiohttp 等原生支持 asyncio 的应用。配置worker_classasyncio适用场景使用 async/await 语法的现代 Python Web 框架FastAPI、aiohttp、Sanic 等。注意目前 asyncio Worker 仍处于试验阶段生产环境需谨慎。6.4 gthread WorkersGunicorn 也支持多线程 Workerworker_class gthread。它与同步模式类似但每个 Worker 内部使用多个线程处理请求线程之间共享内存。配置worker_classgthreadthreads4# 每个 Worker 的线程数workers2# 可以适当减少 Worker 数量适用场景应用存在阻塞操作但不想引入 gevent 的复杂性。共享资源如数据库连接的线程安全可控。优点线程比进程轻量内存占用小。缺点受限于 Python GILCPU 密集型任务无法并行。6.5 选择指南I/O 密集型代码同步选择gevent或eventlet。I/O 密集型代码异步async/await选择asyncio。CPU 密集型选择sync增加 Worker 数量。混合型不想引入协程选择gthread适当调整线程数。7. 性能调优7.1 Worker 数量的确定Worker 数量并非越多越好过多会导致上下文切换开销和内存压力。常见公式同步syncworkers (2 * CPU核心数) 1异步gevent/eventletworkers CPU核心数每个 Worker 可处理大量并发连接gthreadworkers CPU核心数threads根据 I/O 等待时间调整通常 4-8 之间。可以使用multiprocessing.cpu_count()获取 CPU 核心数在配置文件中动态计算importmultiprocessing workersmultiprocessing.cpu_count()*217.2 并发连接数对于异步 Workerworker_connections决定了每个 Worker 可以同时处理的连接数。默认 1000如果你的应用每个请求处理时间较长可能需要降低该值避免内存溢出。7.3 超时设置timeout合理设置超时避免慢请求长期占用 Worker。如果应用中有长时间运行的任务如报表生成考虑将其异步化或增加超时时间。graceful_timeout平滑重启时给 Worker 的缓冲时间确保现有请求完成。7.4 内存管理max_requests每个 Worker 处理一定请求后自动重启防止内存泄漏。建议设置 1000-10000 之间的值并配合max_requests_jitter避免同时重启。preload_app是否在启动 Master 时预加载应用代码。预加载可以减少内存占用共享只读内存但可能导致代码修改后重启变慢。通常建议生产环境开启preload_app True。7.5 日志优化生产环境中将访问日志和错误日志输出到文件并配置 logrotate 进行轮转。Gunicorn 支持直接使用 Python 的 logging 配置但通常通过accesslog和errorlog即可。关闭不必要的日志输出accesslog None或errorlog None。7.6 系统调优ulimit增大文件描述符限制因为每个连接占用一个文件描述符。在 systemd 或 supervisor 中设置limitNOFILE。内核参数调整 net.core.somaxconn、net.ipv4.tcp_max_syn_backlog 等提高连接队列长度。使用 Nginx 作为反向代理处理静态文件、SSL 终结、负载均衡、缓冲等让 Gunicorn 专注于动态内容。8. 部署实践8.1 与 Nginx 结合Nginx 作为反向代理处理静态文件、SSL、负载均衡、请求缓冲等Gunicorn 只处理动态请求。典型配置如下Nginx 配置部分upstream app_server { server 127.0.0.1:8000 fail_timeout0; } server { listen 80; server_name example.com; location /static/ { alias /path/to/static/; } location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_redirect off; proxy_pass http://app_server; } }Gunicorn 配置bind127.0.0.1:8000workers4# 其他配置...注意Gunicorn 应监听内网地址127.0.0.1不要直接暴露公网。同时Nginx 会传递客户端真实 IP 到X-Forwarded-For头Gunicorn 可以通过proxy_allow_ips配置信任代理。8.2 使用 Supervisor 管理安装Supervisoryum install -y supervisor确认安装后的目录结构在 CentOS 上Supervisor 的主配置文件是 /etc/supervisord.conf而自定义服务配置文件通常放在 /etc/supervisord.d/ 目录下注意是 supervisord.d不是 supervisor/conf.d。你可以检查一下ls /etc/supervisord.d/如果该目录不存在可以手动创建mkdir -p /etc/supervisord.d/创建配置文件Supervisor 可以监控 Gunicorn 进程在崩溃时自动重启。安装 Supervisor 后创建配置文件/etc/supervisor.d/your_project.ini[program:your_project] command/path/to/venv/bin/gunicorn -c /path/to/gunicorn.conf.py app:app directory/path/to/project userroot autostarttrue autorestarttrue stopasgrouptrue killasgrouptrue stdout_logfile/var/log/myapp/gunicorn.log stderr_logfile/var/log/myapp/gunicorn.err environmentLANGen_US.UTF-8,LC_ALLen_US.UTF-8然后启动systemctl start supervisord # 启动 Supervisor 服务 systemctl enable supervisord # 设置开机自启 # 重新读取配置并启动程序 supervisorctl reread supervisorctl update supervisorctl start your_project8.3 使用 Systemd管理对于现代 Linux 发行版可以使用 systemd 管理。创建/etc/systemd/system/your_project.serviceeg1:[Unit] Descriptiongunicorn daemon for myapp Afternetwork.target [Service] Userroot Grouproot WorkingDirectory/path/to/project EnvironmentPATH/path/to/venv/bin ExecStart/path/to/venv/bin/gunicorn -c /path/to/gunicorn.conf.py app:app Restarton-failure [Install] WantedBymulti-user.targeteg2:[Unit] DescriptionPhoto Resize Gunicorn Service Afternetwork.target [Service] Userroot Grouproot WorkingDirectory/var/www/photo-resize ExecStart/var/www/photo-resize/venv/bin/gunicorn -w 4 -b 127.0.0.1:5000 app:app Restartalways [Install] WantedBymulti-user.target然后启用systemctl daemon-reload systemctl start your_project systemctl enable your_project systemctl status your_project 后期修改重启 systemctl restart your_project 查看项目运行状态 systemctl status goal_tracker8.4 Docker 部署Docker 是现代化的部署方式。编写 DockerfileFROM python:3.9-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt gunicorn COPY . . CMD [gunicorn, -c, gunicorn.conf.py, app:app]然后构建镜像并运行。注意在 Docker 中Gunicorn 应该以非 root 用户运行并监听容器端口。9. 高级主题9.1 钩子函数HooksGunicorn 提供了一系列钩子函数允许你在特定事件发生时执行自定义代码。钩子在配置文件中定义。常用钩子on_starting(server)Master 进程启动时调用。on_reload(server)收到 SIGHUP 信号时调用。when_ready(server)所有 Worker 启动完成服务准备好接收请求时调用。pre_fork(server, worker)Master 即将 fork 新 Worker 时调用。post_fork(server, worker)Worker 进程 fork 完成后调用。pre_exec(server, worker)Worker 即将执行新代码时调用。worker_int(worker)Worker 收到 SIGINT 或 SIGQUIT 时调用。worker_abort(worker)Worker 超时被中止时调用。示例在 Worker 启动时初始化数据库连接池。defpost_fork(server,worker):frommyappimportdb db.init_pool()9.2 信号处理Gunicorn 响应多种 UNIX 信号用于动态控制SIGINT / SIGTERM立即关闭不等待 Worker 完成。SIGQUIT优雅关闭等待 Worker 处理完当前请求。SIGHUP重新加载配置启动新 Worker平滑停止旧 Worker热更新。SIGTTIN增加一个 Worker 进程。SIGTTOU减少一个 Worker 进程。SIGUSR2重新打开日志文件配合 logrotate。利用这些信号可以实现不停服部署、动态扩容缩容等操作。9.3 热更新Gunicorn 支持通过发送SIGHUP信号实现平滑重启热更新。当 Master 收到 SIGHUP 时它会重新加载配置文件。启动新的 Worker 进程。等待旧 Worker 处理完当前请求受graceful_timeout限制后关闭旧 Worker。这样可以在不中断服务的情况下更新应用代码。通常配合部署脚本使用。9.4 使用 preload_app 和共享内存当设置preload_app True时Gunicorn 在 Master 进程启动时加载应用代码然后 fork Worker。这样应用代码在内存中只有一份拷贝写时复制可以显著减少内存占用尤其适合大应用。但注意如果应用在导入时创建了数据库连接等资源这些资源会被所有 Worker 共享可能引发问题。因此需确保应用导入时不执行有副作用的操作或者将连接池初始化放在钩子中。10. 常见问题与解决方案10.1 502 Bad GatewayNginx可能原因Gunicorn 未启动或崩溃。Gunicorn 监听地址与 Nginx proxy_pass 不一致。超时时间过短请求被 Gunicorn 或 Nginx 中断。检查 Gunicorn 日志确认进程状态调整timeout和keepalive参数。10.2 连接数过高导致拒绝服务现象请求失败[ERROR] Worker (pid:1234) was sent SIGKILL。可能原因Worker 超时被 Master 杀死。检查是否有慢请求增加timeout或优化应用。文件描述符不足。调整系统 ulimit。内存不足Worker 被 OOM Killer 杀死。降低并发数或增加内存。10.3 异步 Worker 不生效现象请求依然串行处理。可能原因忘记安装 gevent/eventlet 依赖。未正确设置worker_class。应用中使用了阻塞的同步库未打猴子补丁。确保在应用启动前调用monkey.patch_all()。10.4 日志轮转Gunicorn 本身不支持自动日志轮转但可以通过USR2信号实现。配合 logrotate配置如下/etc/logrotate.d/gunicorn/path/to/logs/access.log /path/to/logs/error.log { daily missingok rotate 30 compress delaycompress notifempty create 0640 www-data www-data sharedscripts postrotate kill -USR2 cat /path/to/gunicorn.pid endscript }11. 总结Gunicorn 作为 Python 世界中最流行的 WSGI 服务器以其简单、稳定、高效赢得了广泛认可。通过本教程你应该已经掌握了Gunicorn 的核心概念和架构安装和基础使用方法详细配置选项及其含义不同工作模式的选择与调优生产环境部署的最佳实践高级功能和常见问题排查最后记住 Gunicorn 不是银弹它擅长处理动态 Web 请求但静态文件、SSL 终结等任务最好交给 Nginx 处理。合理结合其他工具才能构建一个健壮、高性能的 Web 服务。希望本教程能帮助你更好地使用 Gunicorn为你的 Python Web 应用保驾护航。

相关文章:

Python项目部署之Gunicorn知识详解

1. 引言 在 Python Web 开发的世界里,将开发好的应用部署到生产环境是一个至关重要的环节。我们常用的开发框架如 Flask、Django 都内置了简单的 WSGI 服务器,但这些服务器仅适用于开发阶段,因为它们性能低下、安全性不足且无法处理并发请求。…...

技术路径模拟器:人机协同分岔罗盘(修订版)

技术路径模拟器:人机协同分岔罗盘设计代号:FORK-COMPASS-Ω 核心版本:v1.0 设计者:世毫九实验室(Shardy Lab) 一、模拟器概述1.1 核心定位本模拟器是自指递归动力学与多路径决策理论的工程化实现&#xff0…...

G-Helper终极指南:彻底释放华硕笔记本潜能的轻量级控制工具

G-Helper终极指南:彻底释放华硕笔记本潜能的轻量级控制工具 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Stri…...

从传统WinForm到现代化桌面应用:SunnyUI如何重塑C开发体验

从传统WinForm到现代化桌面应用:SunnyUI如何重塑C#开发体验 【免费下载链接】SunnyUI SunnyUI.NET 是基于.NET Framework 4.0、.NET6、.NET8、.NET9 框架的 C# WinForm UI、开源控件库、工具类库、扩展类库、多页面开发框架。 项目地址: https://gitcode.com/gh_m…...

常见音视频编码二进制分析笔记(H264,H265,AAC,OPUS,G711A,G711U)

常见音视频编码二进制分析笔记 文章目录常见音视频编码二进制分析笔记视频H.264 (AVC)说明nal_unit_type:nal_ref_idcH.265 (HEVC)音频AAC (Advanced Audio Coding)G.711A (PCMA)G.711U (PCMU)OPUS视频 H.264 (AVC) 标准来源:ITU-T H.264 | ISO/IEC 14496-10 起始…...

2024 CKA备考环境搭建实战 | 从零构建VMware Ubuntu虚拟化平台

1. 为什么选择VMware搭建CKA备考环境 备考CKA认证时,一个稳定、可复现的实验环境至关重要。我在过去三年帮助过上百名学员搭建环境,发现VMware Workstation有三大不可替代的优势: 首先是硬件兼容性。我的旧笔记本只有8GB内存,通过…...

计算机组成原理视角:深度估计模型推理的硬件加速优化

计算机组成原理视角:深度估计模型推理的硬件加速优化 最近在项目里用到了Lingbot-Depth-Pretrain-ViTL-14这个深度估计模型,效果确实不错,但跑起来总觉得有点“慢”。不是模型本身的问题,而是感觉硬件资源没被“喂饱”。这让我想…...

2026奇点智能技术大会深度复盘:为什么92%的AI初创公司已在Q2切换至AI-Native开源栈?(附迁移成本测算表)

第一章:2026奇点智能技术大会:AI原生开源生态 2026奇点智能技术大会(https://ml-summit.org) AI原生范式的演进本质 AI原生(AI-Native)不再仅指“用AI增强已有系统”,而是从底层基础设施、开发范式到应用交付全栈重构…...

HTML是Web开发的基石,掌握HTML是构建网页的第一步

HTML是Web开发的基石,掌握HTML是构建网页的第一步。 HTML简介 HTML(HyperText Markup Language)超文本标记语言: 不是编程语言,是标记语言 使用标签描述网页结构 浏览器解析HTML显示网页 基本结构 <!DOCTYPE html> <html> <head><...

Steam DLC解锁工具终极指南:5分钟快速上手SmokeAPI游戏DLC模拟器

Steam DLC解锁工具终极指南&#xff1a;5分钟快速上手SmokeAPI游戏DLC模拟器 【免费下载链接】SmokeAPI Legit DLC Unlocker for Steamworks 项目地址: https://gitcode.com/gh_mirrors/smo/SmokeAPI 想要体验心仪游戏的所有DLC内容却受限于预算&#xff1f;作为开发者需…...

Qwen3.5-9B-AWQ-4bit企业应用案例:电商商品图智能标签生成实操

Qwen3.5-9B-AWQ-4bit企业应用案例&#xff1a;电商商品图智能标签生成实操 1. 电商商品标签的痛点与解决方案 在电商运营中&#xff0c;商品图片标签是影响搜索排名和转化率的关键因素。传统的人工打标方式面临三大挑战&#xff1a; 效率瓶颈&#xff1a;一个运营人员每天最…...

从大模型 API 生态到 Spring AI:接口、平台与框架三层怎么串起来

一、开始之前&#xff1a;五个真实困惑在正式展开之前&#xff0c;先问你五个问题——这是开发者在接触大模型应用时最常卡住的地方。读完这篇文章&#xff0c;希望每一个你都能自己回答出来。困惑一&#xff1a;「ChatGPT」「GPT-4o」「OpenAI」是同一个东西吗&#xff1f;不是…...

深入浅出:IgH EtherCAT主站的实时性优化技巧(从内核配置到线程调度)

深入浅出&#xff1a;IgH EtherCAT主站的实时性优化技巧&#xff08;从内核配置到线程调度&#xff09; 在工业自动化领域&#xff0c;毫秒级的延迟可能导致生产线停摆&#xff0c;微秒级的抖动可能引发机器人轨迹偏差。作为开源EtherCAT主站的标杆&#xff0c;IgH的性能直接决…...

AI入门必看|零基础搞懂人工智能核心定义,避开入门误区

摘要&#xff1a;本文专为AI零基础小白打造&#xff0c;用大白话拆解人工智能的核心定义、发展脉络&#xff0c;厘清新手最易混淆的概念&#xff0c;帮你快速建立对AI的正确认知&#xff0c;迈出入门第一步&#xff0c;拒绝被专业术语劝退。关键词&#xff1a;人工智能入门&…...

如何快速安装Jasminum插件:中文文献管理终极解决方案

如何快速安装Jasminum插件&#xff1a;中文文献管理终极解决方案 【免费下载链接】jasminum A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件&#xff0c;用于识别中文元数据 项目地址: https://gitcode.com/gh_mirrors/ja/jasminum 还在为中文文献管…...

关于ACT模型使用时的注意点和部署调试方法

目录 1.模型训练的输入图像必须是RGB格式 2.训练数据中需要处理action的数据 3.通过输入训练数据中的qpos和image来验证推理的代码是否正确 4.通过提前录入一组未在训练集中的数据作为模型输入,观察输入的action和预测的action曲线 5.模型推理后根据情况执行多少步,而不是全部…...

揭秘Informer:如何通过ProbSparse注意力机制革新长序列预测

1. 长序列预测的困境与Transformer的瓶颈 想象一下你正在管理一个大型电网系统&#xff0c;需要预测未来30天的电力消耗。面对长达720小时的历史数据&#xff08;每小时一个数据点&#xff09;&#xff0c;传统的LSTM模型在预测超过48小时后的结果就开始出现明显偏差&#xff0…...

MySql(基础操作符--查找学校是北大的学生信息)

9.现在运营想要筛选出所有北京大学的学生进行用户调研&#xff0c;请你从用户信息表中取出满足条件的数据&#xff0c;结果返回设备id和学校。示例&#xff1a;user_profileiddevice_idgenderageuniversityprovince12138male21北京大学Beijing23214male复旦大学Shanghai36543fe…...

日立电梯05版规格表智能计算工具(升级版)|WPS宏支持|适配WPS2024+Win10 64位

温馨提示&#xff1a;文末有联系方式日立电梯05规格表工具升级版正式发布 全新优化的日立电梯05规格表计算软件现已上线&#xff0c;专为电梯设计、安装与维保工程师打造&#xff0c;大幅提升参数录入与校验效率。功能标识更直观&#xff0c;操作一目了然 所有计算模块、输入项…...

用Python爬拼多多数据,我帮朋友省了3万块选品费(附完整代码和避坑指南)

用Python爬取拼多多商品数据的实战指南&#xff1a;从技术实现到商业决策 去年夏天&#xff0c;我的好友小林准备开一家网店卖手机配件。作为电商新手&#xff0c;他最头疼的就是选品——市场上同类商品太多&#xff0c;价格差异大&#xff0c;根本不知道从哪里入手。看着他每天…...

CK3M+驱动器(模拟量控制+力矩模式)CompDac前馈补偿:原理与实现方法(1)

在高精度运动控制场景中&#xff0c;CK3M控制器搭配力矩模式驱动器时&#xff0c;CompDac-前馈补偿是提升动态响应速度、减小跟踪误差的核心技术。其核心逻辑是通过“预测性补偿”提前抵消已知扰动与系统非线性影响&#xff0c;弥补传统反馈控制的滞后缺陷&#xff0c;尤其适用…...

AI导出word排版

AI导出Word排版&#xff1a;从“生成内容”到“结构化交付”的最后一公里 在AIGC应用逐步进入生产环境后&#xff0c;一个被反复讨论的问题逐渐浮现&#xff1a; AI生成内容容易&#xff0c;但导出为可用的Word文档却很难。 这一问题不仅存在于个人创作者&#xff0c;也在企业文…...

数据的基本操作——去重

duplicated() DataFrame的duplicated方法返回一个布尔型Series&#xff0c;表示各行是否是重复行。具体用法如下&#xff1a;In[1]: df DataFrame({k1:[one]*3 [two]*4, k2:[1,1,2,3,3,4,4]}) In[2]: df Out[2]: k1 k2 0 one 1 1 one 1 2 one 2 3 two 3 4 two …...

通信失败?MicroROS网络配置全攻略,90%的人都踩过这个坑!

机器人开发必看&#xff01;让MCU和电脑成功"对话"&#x1f4cc; 为什么网络配置这么重要&#xff1f; 很多小伙伴在玩MicroROS时&#xff0c;遇到最多的问题就是&#xff1a;❌ 节点收不到消息 ❌ Agent一直连接不上 ❌ 单片机明明烧录了程序&#xff0c;却毫无反应…...

ArcGIS新手必看:用‘镶嵌至新栅格’搞定不同分辨率DEM的无缝拼接(附像素类型避坑点)

ArcGIS DEM融合实战&#xff1a;从参数原理到完美拼接的完整指南 当你第一次尝试将不同分辨率的DEM数据拼接在一起时&#xff0c;那种"平地起高楼"的突兀感可能让你抓狂——低分辨率区域像模糊的马赛克&#xff0c;而高精度部分则像孤岛般突兀隆起。这不是你操作的问…...

linux驱动调试方法整理

一般我喜欢把linux驱动的调试按矛盾分为几大类&#xff1a;1.驱动工程师和内核/自己的 2.应用工程师和驱动工程师的。其中我们需要掌握linux众多的调试控件才能灵活运用。驱动工程师和内核/自己的1.驱动加载和驱动调试信息使用printk&#xff08;per_log&#xff09;打印需求使…...

2279 上市公司跨国供应链【存续力】(Sustainability) 指标(2004.07-2026.02)

数据简介测度微观合作黏性与“沉没成本”的度量衡 存续力&#xff08;Sustainability&#xff09;衡量了一段供需关系在走向彻底“死亡”之前&#xff0c;曾经拥有过的生命长度。在国际贸易网络中&#xff0c;存续时间的长短反映了中外企业间的合作黏性、技术锁定效应和信任深度…...

第15届省赛蓝桥杯大赛C/C++大学B组

目录 一.握手问题 1.题目讲解 2.代码实现 二.小球反弹 1.题目讲解 2.代码实现 三.好数 1.题目讲解 2.代码实现 四.R 格式 1.题目讲解 2.代码实现 五.宝石组合 1.题目讲解 2.代码实现 六.数字接龙 1.题目讲解 2.代码实现 七.拔河 1.题目讲解 2.代码实现 一…...

《算法题讲解指南:动态规划算法--回文串问题》--35.回文子串,36. 最长回文子串,37.分割回文串 IV,38.分割回文串 II,39.最长回文子序列,40.让字符串成为回文串的最少插入次数

&#x1f525;小叶-duck&#xff1a;个人主页 ❄️个人专栏&#xff1a;《Data-Structure-Learning》《C入门到进阶&自我学习过程记录》 《算法题讲解指南》--优选算法 《算法题讲解指南》--递归、搜索与回溯算法 《算法题讲解指南》--动态规划算法 ✨未择之路&#xff0…...

低空救援先锋:一文读懂应急救援无人机的现在与未来

低空救援先锋&#xff1a;一文读懂应急救援无人机的现在与未来 引言 当灾害突发、通信中断、道路损毁&#xff0c;救援的“黄金时间”分秒必争。传统救援力量受制于地形与时间&#xff0c;往往望“灾”兴叹。如今&#xff0c;随着低空经济浪潮奔涌&#xff0c;应急救援无人机正…...