首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >要使pthread_cancel正常工作,必须安装libgcc_s.so.1

要使pthread_cancel正常工作,必须安装libgcc_s.so.1
EN

Stack Overflow用户
提问于 2020-11-12 12:15:13
回答 2查看 6K关注 0票数 3

我使用的是python;我试图关闭一个通过ThreadPoolExecutor运行的函数,但关机崩溃并返回以下错误:

代码语言:javascript
运行
复制
libgcc_s.so.1 must be installed for pthread_cancel to work

该函数的提交方式为:

代码语言:javascript
运行
复制
record_future = self.executor.submit(next,primitive)

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

代码语言:javascript
运行
复制
executor.shutdown(wait=False)

但是,当执行到这一步时,我得到了libgcc错误。

我试着通过手动安装来“解决”这个问题:

代码语言:javascript
运行
复制
apt-get install libgcc1:amd64

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

代码语言:javascript
运行
复制
$ /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
EN

回答 2

Stack Overflow用户

发布于 2021-01-27 03:58:51

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

代码语言:javascript
运行
复制
import ctypes
libgcc_s = ctypes.CDLL('libgcc_s.so.1')

必须确保在创建任何线程之前加载该变量,并确保变量libgcc_s一直持续到所有线程关闭(即将其放在文件的开头)。

票数 6
EN

Stack Overflow用户

发布于 2021-01-18 00:27:32

你使用的是Python 3.7还是3.8?

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64797838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档