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

Jupyter Notebook运行Qiskit代码持续报BrokenProcessPool错误求助

解决Qiskit中BrokenProcessPool错误的方法

这个错误我之前在Windows的Anaconda环境里也碰到过,大概率是旧版本本地模拟器的进程池兼容性问题,结合你的情况(代码在朋友环境正常运行),可以按下面的步骤来修复:

1. 更换为官方推荐的Aer模拟器

你代码里用的local_qasm_simulator是Qiskit旧版本的后端,现在官方已经推荐使用AerSimulator,它更稳定,也解决了很多Windows下的进程异常问题。修改后的完整代码如下:

首先导入正确的模块:

from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister, execute
from qiskit_aer import AerSimulator

然后给Toffoli函数添加换行(提升可读性,不影响功能):

def toffoli(qc, i1, i2, i3):
    qc.h(i3)
    qc.cx(i2, i3)
    qc.tdg(i3)
    qc.cx(i1, i3)
    qc.t(i3)
    qc.cx(i2, i3)
    qc.tdg(i3)
    qc.cx(i1, i3)
    qc.t(i3)
    qc.tdg(i2)
    qc.cx(i1, i2)
    qc.h(i3)
    qc.tdg(i2)
    qc.cx(i1, i2)
    qc.t(i1)
    qc.s(i2)

最后修改运行部分的后端配置:

qr = QuantumRegister(5)
cr = ClassicalRegister(5)
qc = QuantumCircuit(qr, cr)

qc.x(qr[0])
qc.x(qr[1])
toffoli(qc, qr[0], qr[1], qr[2])
qc.measure(qr[0], cr[0])
qc.measure(qr[1], cr[1])
qc.measure(qr[2], cr[2])

# 使用Aer模拟器替代旧的本地模拟器
backend = AerSimulator()
job = execute(qc, backend, shots=1024)
result = job.result()
print(result.get_counts())

2. 更新Qiskit到最新稳定版

如果你的Qiskit版本比较老,也可能导致这类兼容性问题。在Anaconda Prompt里激活你的QISKitenv环境,然后执行:

pip install --upgrade qiskit qiskit-aer

3. 解决Windows进程池启动问题(备选方案)

如果因为某些原因必须使用旧的模拟器,可以在Jupyter Notebook的最开头添加以下代码,强制设置多进程启动方式:

import multiprocessing
multiprocessing.set_start_method('spawn')

添加后需要重启Jupyter内核再运行代码。

这个错误本质是Windows系统下,旧版本的Qiskit本地模拟器在使用进程池时容易出现子进程异常终止的情况,换成Aer模拟器基本就能解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:24:11