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
相关产品推荐
相关产品推荐

