Windows 下 Python 分布式进程传递对象为何引发 PermissionError?

Windows 下 Python 分布式进程传递对象为何引发 PermissionError?

windows 系统下的 python 分布式进程难题

python 中使用分布式进程时,可能会遇到一些令人困惑的问题。例如,在 windows 系统中创建进程时,传递对象作为参数可能会导致 permissionerror。

问题描述

以下代码示例演示了此问题:

url_manager = process(target=url_manager_proc, args=(url,))
result_solve = process(target=result_solve_proc, args=())
store = process(target=store_proc, args=())
url_manager.start()
result_solve.start()
store.start()

然而,由于某些原因,需要将一个对象作为参数传递给 url_manager_proc 函数。但这会导致以下错误:

PermissionError: [WinError 5] 拒绝访问

解决方案

令人惊讶的是,此问题的解决方案不是修改代码或使用不同的模块,而是更换操作系统。

改用 linux

经过测试,在 ubuntu 18.04 linux 系统中运行相同的代码不会产生 permissionerror。这意味着 windows 系统存在某种限制,会阻止进程之间传递对象。

因此,如果您遇到此问题,可以考虑改用 linux 操作系统以解决分布式进程的问题。

以上就是Windows 下 Python 分布式进程传递对象为何引发 PermissionError?的详细内容,更多请关注其它相关文章!