You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python multiprocessing脚本在Windows Server 2019中挂起的原因是什么?

Python multiprocessing脚本在Windows Server 2019挂起但Windows 10正常运行

问题描述

我有一个使用multiprocessing的Python脚本,在本地Windows 10机器上运行正常,但部署到Windows Server 2019环境后会无限期挂起,无法完成执行。

简化后的代码示例:

from multiprocessing import Pool

def worker(x):
    return x * x

if __name__ == "__main__":
    with Pool(4) as p:
        result = p.map(worker, range(10))
        print(result)

运行环境

  • Python 3.10
  • Windows Server 2019
  • 通过命令行运行(非IDE)

本地执行会立即输出结果,但服务器上脚本一直挂起无反应,请问可能的原因是什么?


可能的原因与排查方向

  • 安全策略或软件拦截:Windows Server通常有更严格的组策略或安全软件(如杀毒、终端检测响应工具),可能拦截了multiprocessing创建的子进程。尝试以管理员权限运行脚本,或者临时禁用安全软件测试是否恢复正常。
  • 进程启动与初始化异常:Windows平台multiprocessing默认使用spawn启动方式,子进程需要重新导入主脚本。如果服务器上脚本所在目录权限不足、Python模块路径配置异常,会导致子进程初始化失败,父进程一直等待子进程响应。可以尝试显式指定启动方式(set_start_method('spawn')),并检查脚本目录的读写权限。
  • 服务器资源不足:若服务器CPU、内存被其他进程大量占用,multiprocessing创建的子进程无法分配到足够资源启动或运行。查看任务管理器的资源占用情况,尝试减小Pool的并发数(比如改为Pool(2))测试。
  • Python环境损坏:服务器上的Python安装可能不完整,multiprocessing相关组件损坏。可以重新安装Python 3.10,或使用python -m pip check命令检查依赖完整性。
  • 控制台输出缓冲问题:部分服务器的控制台输出缓冲设置与本地不同,可能导致结果已生成但未即时显示,看起来像挂起。尝试将结果写入文件(如with open('result.txt', 'w') as f: f.write(str(result))),或添加flush=True强制刷新输出(print(result, flush=True))。

内容的提问来源于stack exchange,提问作者user32747404

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.02 06:52:29