python - 必须安装 libgcc_s.so.1 才能让 pthread_cancel 工作

标签 python threadpool threadpoolexecutor

我在 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 到底在哪里寻找这个库,否则我会尝试创建一个符号链接(symbolic link),因为该库已经安装在:
$ /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

最佳答案

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

import ctypes
libgcc_s = ctypes.CDLL('libgcc_s.so.1')
必须确保在创建任何线程之前加载它并且变量 libgcc_s持续到所有线程都关闭(即把它放在文件的开头)。

关于python - 必须安装 libgcc_s.so.1 才能让 pthread_cancel 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64797838/

相关文章:

java - 如果在 java 中声明 ExecutorService 后错过 shutdown 子句会发生什么

python - Webapp2 Google App Engine Firebase 导入错误

python - 树莓派 2-无法安装 scikit-image

Python - Pygame - 获取特定声音是否正在播放

C Pthreads - 线程安全队列实现的问题

java - 如何监控 future 任务完成的后台任务

python - 按具有多个选项的字段过滤查询集

java - 在给定机器上控制 Java 线程创建的最佳方法是什么?

c# - 线程池 - 可能的线程执行顺序问题

java - 执行器服务: How it acts as watchdog for thread-pools?