首页 > 编程问答 >ValueError:信号量或锁释放次数过多?

ValueError:信号量或锁释放次数过多?

时间:2024-07-22 13:34:31浏览次数:10  
标签:python matplotlib cygwin pip

当我尝试在 Cygwin 中执行操作时,我会得到 ValueError: semaphore or lock released too many times 我该怎么办? pip install matplotlib 更新:

UPDATE:

$ pip install matplotlib
Downloading/unpacking matplotlib
  You are installing an externally hosted file. Future versions of pip will default to disallowing externally hosted files.
  You are installing a potentially insecure and unverifiable file. Future versions of pip will default to disallowing insecure files.
  Downloading matplotlib-1.3.0.tar.gz (42.1MB): 42.1MB downloaded
  Running setup.py egg_info for package matplotlib
    ============================================================================
    Edit setup.cfg to change the build options

    BUILDING MATPLOTLIB
                matplotlib: yes [1.3.0]
                    python: yes [2.7.5 (default, Jul 30 2013, 14:34:22)  [GCC
                            4.8.1]]
                  platform: yes [cygwin]

    REQUIRED DEPENDENCIES AND EXTENSIONS
                     numpy: yes [version 1.7.1]
                  dateutil: yes [using dateutil version 2.1]
                   tornado: yes [tornado was not found. It is required for the
                            WebAgg backend. pip/easy_install may attempt to
                            install it after matplotlib.]
                 pyparsing: yes [pyparsing was not found. It is required for
                            mathtext support. pip/easy_install may attempt to
                            install it after matplotlib.]
                     pycxx: yes [Couldn't import.  Using local copy.]
                    libagg: yes [pkg-config information for 'libagg' could not
                            be found. Using local copy.]
                  freetype: yes [version 16.1.10]
                       png: yes [version 1.5.14]

    OPTIONAL SUBPACKAGES
               sample_data: yes [installing]
                  toolkits: yes [installing]
                     tests: yes [nose 0.11.1 or later is required to run the
                            matplotlib test suite]

    OPTIONAL BACKEND EXTENSIONS
                    macosx: no  [Mac OS-X only]
                    qt4agg: no  [PyQt4 not found]
    Process PoolWorker-1:
    Traceback (most recent call last):
      File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
        self.run()
      File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run
        self._target(*self._args, **self._kwargs)
      File "/usr/lib/python2.7/multiprocessing/pool.py", line 102, in worker
        task = get()
      File "/usr/lib/python2.7/multiprocessing/queues.py", line 378, in get
        rrelease()
    ValueError: semaphore or lock released too many times

此错误通常在使用 multiprocessing 或其他线程库并在 Cygwin 中运行时出现。这个问题源于 Cygwin 在处理进程分叉时存在一个已知问题,这可能会干扰这些库使用的底层信号量机制。

可以尝试以下几种解决方案:

1. 避免在 Cygwin 中使用 multiprocessing

  • 如果可能,请在不使用 multiprocessing 的情况下重写代码。 对于某些用例,可以使用多线程(例如,使用 threading 模块)或顺序编程来实现相同的结果,而不会遇到此问题。
  • 如果无法避免 multiprocessing ,请考虑在不同的环境中运行的代码,例如 Windows 本地 Python 安装或 Linux 虚拟机。 这些环境通常对 multiprocessing 有更好的支持,并且不太可能表现出此特定问题。

2. 使用 spawn 启动方法:

  • 从 Python 3.4 开始, multiprocessing 提供了一种名为 spawn 的替代启动方法,该方法在 Cygwin 中可能更可靠。要使用此方法,请在的代码中设置 multiprocessing 上下文:
import multiprocessing as mp

if __name__ == '__main__':
    mp.set_start_method('spawn')
    # 在这里放置使用 multiprocessing 的代码

3. 更新 Cygwin 和 Python:

  • 确保运行的是最新版本的 Cygwin 和 Python。有时,升级到最新版本可以解决与 Cygwin 进程分叉相关的问题。

4. 报告错误:

  • 如果问题仍然存在,请考虑向相关的项目(如 Cygwin、Python 或 matplotlib )报告错误。提供有关的环境和重现步骤的详细说明可以帮助开发人员识别并解决问题。

请注意,这些解决方案可能并不总是有效,具体取决于的代码和环境的具体情况。如果问题仍然存在,可能需要探索其他解决方法或考虑在不同的环境中运行的代码。

标签:python,matplotlib,cygwin,pip
From: 18525236

相关文章

  • 无法在 Ubuntu 20.04 中安装 python3-venv,一些损坏的软件包
    这可能很长,但请耐心看完当我在关注这篇文章时尝试安装python3-venvsudoaptinstallbuild-essentiallibssl-devlibffi-devpython3-dev它抛出了以下错误:libffi-devpython3-devReadingpackagelists...DoneBuildingdependencytreeRead......
  • 正则表达式在python爬虫中常用的方法举例
    在爬虫中,正则表达式被广泛用于从网页中提取特定信息。以下是一些常用的正则表达式方法举例,以及它们在爬虫中的典型应用场景:1.提取URLimportreurl_pattern=r'https?://(?:[-\w.]|(?:%[\da-fA-F]{2}))+'urls=re.findall(url_pattern,html_content)用于从网页中......
  • 使用 Python XlsxWriter 将 DatePicker 添加到 Excel 单元格中?
    我正在尝试使用PythonXlsxWriter生成的Excel创建输入表单。我想知道是否可以在Excel单元格中添加一个迷你日历(作为DatePicker)供用户输入日期?我偶然发现了Microsoft支持团队提供的本指南插入日期选择器:|||https://support.microsoft.com/en-us/office/......
  • [1037] Python operation of three keys shortcut (pynput)
    Theshortcutof win+shift+leftdoesnotworkwellin pyautogui,butitworkswellin pynput.MovingtheActiveWindowtoaDifferentMonitor: You’reright;PyAutoGUIdoesn’tdirectlysupportmovingwindowsacrossmonitorswiththeeleganceofaswan......
  • Python:定期检测断开故障的USB设备并重新初始化实例
    我有一个USB设备,有时会通过USB端口发送串行数据。问题是设备出现故障,有时会无缘无故地断开连接并再次连接到电脑。问题不大,但在这些情况下我需要重新初始化serial.Serial(port)实例,这有点烦人。该设备没有可以从我那里收到的任何命令,我可以验证它是否已连接。我可以......
  • 【校招+社招】华为OD机试 - 拼接URL(Java、JavaScript、Python、C、C++)
    鱼弦:公众号【红尘灯塔】,CSDN博客专家、内容合伙人、新星导师、全栈领域优质创作者、51CTO(Top红人+专家博主)、github开源爱好者(go-zero源码二次开发、游戏后端架构https://github.com/Peakchen)算法概述URL拼接(URL拼接)是指将多个URL组件(方案、主机、端口、路径、查询参......
  • 使用 Google Colab 时,Python 包“datasets”从 virtualenv 目录“site-packages”中消
    我正在使用GoogleColab并尝试创建一个虚拟环境来工作。我的代码是:fromgoogle.colabimportdrivedrive.mount('/content/drive')!pipinstallvirtualenvmyenv_dir='/content/drive/MyDrive/virtual_env/'!virtualenv{myenv_dir}!chmod+x{myen......
  • Python 3 - openpyxl - 按名称迭代列
    使用openpyxl不按数字而是按列标题(ws第一行中的字符串值)迭代列的最简单方法是什么:如下所示:forcellinws.columns['revenue']:print(cell.value)不幸的是,openpyxl不直接支持像ws.columns['revenue']这样按列标题进行迭代。openpyxl......
  • Python selenium 网络抓取 recaptcha
    我想抓取一个网站,但在此之前有一个验证码,我什至使用api获取了数据,并且我还将其注入到网站中,因为网页没有提交按钮,我无法提交。流程是这样的,如果我解决同一网址中的验证码,隐藏的内容将被显示。但它并没有得到解决。我到处都找过了。我找不到解决方案。谁能帮我解决这个问题?......
  • Python 装饰器 详解+案例
    Python装饰器是一种特殊的函数,用于修改其他函数的功能。装饰器可以在不改变原函数代码的情况下,对函数进行增加、修改或者扩展功能。装饰器的语法形式是在函数定义前使用@符号,并在@后面加上装饰器的名称。装饰器函数接受被装饰函数作为参数,并返回一个修改后的函数。impo......