必须安装libgcc_s.so.1才能使pthread_cancel工作

2024-09-25 08:37:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python上;我正试图关闭通过ThreadPoolExecutor运行的函数,但关闭失败,出现以下错误:

libgcc_s.so.1 must be installed for pthread_cancel to work

该函数随以下内容一起提交:

record_future = self.executor.submit(next,primitive)

primitive是一个迭代器,通常返回一个值,但在某些情况下,它需要等待一段时间才能返回一个值(因为计算时间长等等)。在这些情况下,当我需要关闭正在运行的线程时,我不能等待迭代器完成返回,需要立即关闭它。我是这样做的:

executor.shutdown(wait=False)

然而,当执行达到这一点时,我得到了libgcc错误

我尝试通过手动安装来“解决”它:

apt-get install libgcc1:amd64

但是没有骰子。我不确定python到底在哪里寻找这个库,否则我会尝试创建一个符号链接,因为该库已经安装在:

$ /sbin/ldconfig -p | grep libgcc
libgcc_s.so.1 (libc6,x32) => /usr/libx32/libgcc_s.so.1
libgcc_s.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libgcc_s.so.1
libgcc_s.so.1 (libc6) => /usr/lib32/libgcc_s.so.1

Tags: installed函数forusr错误情况bex86
2条回答

您使用的是Python 3.7还是3.8

我在使用我的AnacondaPython 3.8的Python sounddevice中也遇到了这个错误,但在使用我的AnacondaPython 3.7时却没有遇到。我已经在谷歌搜索中测试了所有的变通方法,并确保所有相关的软件包和库都是相同的版本,但仍然不起作用。我最后的猜测是Python 3.8与3.7版本的差异。尽管情况可能并非如此

我在Python mailing list中找到了一个潜在的解决方法,通过ctypes显式加载libgcc_.so.1,如下所示:

import ctypes
libgcc_s = ctypes.CDLL('libgcc_s.so.1')

必须确保在创建任何线程之前加载该变量,并且变量libgcc_s一直持续到所有线程都关闭为止

相关问题 更多 >