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

Python multiprocessing Pool无法响应KeyboardInterrupt问题

multiprocessing.Pool中KeyboardInterrupt无法终止Python程序

问题现象

运行以下multiprocessing.Pool代码时,按下CTRL+C触发KeyboardInterrupt后,子进程会中断停止,但主进程不响应中断,反而重新生成新的子进程,无法终止程序。

复现代码

import multiprocessing as mp
import time

print(f"INIT {__name__}")


def worker(a):
    time.sleep(999)


def main():
    with mp.Pool(2) as p:
        for _ in p.imap(worker, range(3)):
            ...


if __name__ == "__main__":
    main()

控制台输出

INIT __main__
INIT __mp_main__
INIT __mp_main__
Process SpawnPoolWorker-2:
Process SpawnPoolWorker-1:
Traceback (most recent call last):
Traceback (most recent call last):
  File "Lib\multiprocessing\process.py", line 314, in _bootstrap
    self.run()
  File "Lib\multiprocessing\process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "Lib\multiprocessing\pool.py", line 125, in worker
    result = (True, func(*args, **kwds))
                    ^^^^^^^^^^^^^^^^^^^
  File "C:\WIN_PROJEKTE\informatik\synthetic-data-generation\src\test2.py", line 8, in worker
    time.sleep(999)
KeyboardInterrupt
  File "Lib\multiprocessing\process.py", line 314, in _bootstrap
    self.run()
  File "Lib\multiprocessing\process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "Lib\multiprocessing\pool.py", line 125, in worker
    result = (True, func(*args, **kwds))
                    ^^^^^^^^^^^^^^^^^^^
  File "test2.py", line 8, in worker
    time.sleep(999)
KeyboardInterrupt
INIT __mp_main__
INIT __mp_main__

预期效果

按下CTRL+C时,主进程应直接终止,而非子进程中断后重启。多次按下CTRL+C仍存在相同问题。

已尝试操作

  • 在Windows和Linux系统测试
  • 使用Python 3.11.3和Python 3.13.0版本
  • 设置信号处理器
  • 测试子进程快速结束的场景无问题,示例代码:
def worker(a):
    return 1

def main():
    with mp.Pool(2) as p:
        for _ in p.imap(worker, range(100_000_000)):
            pass

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 16:40:13