Windows下Python/Pytest启动multiprocessing.Process触发访问违例异常
Windows下Python多进程抛出
Windows fatal exception: access violation但脚本可正常执行 问题现象
在Windows系统中运行指定Python代码或通过Pytest执行时,控制台会输出Windows fatal exception: access violation异常信息,但脚本最终仍能正常执行完成。
复现代码
import multiprocessing as mp import faulthandler faulthandler.enable() def dummy_function(): import os print(f"Worker PID: {os.getpid()}") print("Worker process completed") def test_reproduce(): p = mp.Process(target=dummy_function) p.start() p.join() print(f"Process exit code: {p.exitcode}") if __name__ == "__main__": print("Direct run:") test_reproduce() print("Success")
异常追踪信息
Windows fatal exception: access violation Current thread 0x00000f48 (most recent call first): File "C:\Python\cpython-3.10.16-windows-x86_64-none\lib\multiprocessing\popen_spawn_win32.py", line 73 in __init__ File "C:\Python\cpython-3.10.16-windows-x86_64-none\lib\multiprocessing\context.py", line 336 in _Popen File "C:\Python\cpython-3.10.16-windows-x86_64-none\lib\multiprocessing\context.py", line 224 in _Popen File "C:\Python\cpython-3.10.16-windows-x86_64-none\lib\multiprocessing\process.py", line 121 in start File "C:\src\sandbox\minimal.py", line 5 in test_reproduce
关键细节
- 异常根源指向
_winapi.CreateProcess()函数。 - 未启用
faulthandler时,直接运行Python脚本不会显示该异常;但Pytest会自动启用faulthandler,因此会触发异常输出。
环境范围
- 系统:Windows 11、Windows 10
- Python版本:3.10、3.12
- 此前代码可正常运行,暂未明确导致问题出现的变更原因。
内容的提问来源于stack exchange,提问作者kevinlinxc
相关产品推荐
相关产品推荐

