相关疑难解决方法(0)

Python多处理:权限被拒绝

我在尝试执行使用多处理包的python程序时遇到错误:

  File "/usr/local/lib/python2.6/multiprocessing/__init__.py", line 178, in RLock
    return RLock()
  File "/usr/local/lib/python2.6/multiprocessing/synchronize.py", line 142, in __init__
    SemLock.__init__(self, RECURSIVE_MUTEX, 1, 1)
  File "/usr/local/lib/python2.6/multiprocessing/synchronize.py", line 49, in __init__
    sl = self._semlock = _multiprocessing.SemLock(kind, value, maxvalue)
OSError: [Errno 13] Permission denied
Run Code Online (Sandbox Code Playgroud)

看起来用户没有访问共享内存的权限.使用root权限执行时,它可以正常工作.

是否有任何解决方案以普通用户(非root用户身份)运行它?

Python版本2.6.2,操作系统是Linux 2.6.18(CentOS版本5.4),它是VPS机器.

python linux

49
推荐指数
2
解决办法
3万
查看次数

使用 dask 或 joblib multiprocessing 编译可执行文件会导致错误

我正在使用 dask 或 joblib 将一些串行处理的 python 作业转换为多处理。可悲的是,我需要在 Windows 上工作。
当从 IPython 内运行或从命令行使用 python 调用 py 文件时,一切运行正常。
使用 cython 编译可执行文件时,它不再正常运行:越来越多的进程(无限制且大于请求的进程数)开始启动并阻塞我的系统。
它以某种方式感觉像多处理炸弹- 但当然我曾经if __name__=="__main__:"拥有控制块 - 通过在命令行中从 python 调用中正常运行获得批准。
我的 cython 调用是cython --embed --verbose --annotate THECODE.PY,我正在编译gcc -time -municode -DMS_WIN64 -mthreads -Wall -O -I"PATH_TO_\include" -L"PATH_TO_\libs" THECODE.c -lpython36 -o THECODE生成一个 windows 可执行文件THECODE.exe
其他(单处理)代码运行良好。
dask 和 joblib 的问题似乎相同(这可能意味着 dask 的工作方式类似于或基于 joblib)。
有什么建议?

对于那些对mcve感兴趣的:只需从Multiprocessing Bomb 中获取第一个代码并使用上面的 cython 命令编译它就会导致一个可执行文件炸毁你的系统。(我刚试过:-))

通过在代码示例中添加一行以显示以下内容,我发现了一些有趣的东西__name__: …

python windows cython joblib dask

2
推荐指数
1
解决办法
1822
查看次数

标签 统计

python ×2

cython ×1

dask ×1

joblib ×1

linux ×1

windows ×1