如何在Python中设置线程特定的环境变量?

2023-12-11

我想创建两个(或更多)线程,并在每个线程中执行不同的外部程序,比方说aaa and bbb。这些外部程序需要位于不同目录中的库,比方说/aaalib and /bbblib,所以我必须设置环境变量LD_LIBRARY_PATH在执行它们之前。我想避免使用 shell,所以解决方案如执行LD_LIBRARY_PATH=/aaalib aaa不太好。

问题是:我该如何设置os.environ['LD_LIBRARY_PATH']以这样的方式它在不同的线程中有不同的值?

附言。我尝试了解决方案os.environ['...'] = threading.local()描述here,但它以下列方式失败:

In [1]: import os, threading
In [2]: os.environ['LD_LIBRARY_PATH'] = threading.local()
-----------------------
TypeError           Traceback (most recent call last)
<ipython-input-2-a2c8ef0b901b> in <module>()
----> 1 os.environ['LD_LIBRARY_PATH'] = threading.local()
/usr/lib/python2.7/os.pyc in __setitem__(self, key, item)
471                 self.data = environ
472             def __setitem__(self, key, item):
--> 473                 putenv(key, item)
474                 self.data[key] = item
475             def update(self,  dict=None, **kwargs):
TypeError: must be string, not thread._local

你可以尝试使用subprocess模块并执行如下操作:

import subprocess
import os

env = os.environ.copy()
env['LD_LIBRARY_PATH'] = '/aaalib'
aaa_process = subprocess.Popen(['aaa'], env=env)

env = os.environ.copy()
env['LD_LIBRARY_PATH'] = '/bbblib'
bbb_process = subprocess.Popen(['bbb'], env=env)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Python中设置线程特定的环境变量? 的相关文章

随机推荐

  • 自定义通知中按钮的事件 OnClick

    我有一个带有按钮的自定义通知 要设置通知并使用按钮上的 OnClick 事件 我使用了以下代码 Notification and intent of the notification Notification notification ne
  • 如何在java中迭代json对象

    我正在尝试迭代我的 json 文件并获取所需的详细信息 这是我的 json 000 component c determinantType dt determinant d header h determinantvalue null 00
  • IE jQuery 不透明度抗锯齿问题

    我正在使用 jQuery 淡入和淡出主页上链接的 png 图像http www logandwight com 在 IE7 和 IE8 中 文本没有抗锯齿功能 并且都是四方形的 我尝试过弄乱不透明度设置 然后尝试专门为 IE 设置过滤器属性
  • 在更新页面上包括关系实体的列表视图

    我正在尝试扩展更新视图以包含编辑表单下方一些相关项目的列表视图 我有两个模型 Publishers 和 Volumes 它们具有多对多关系 我想做的是 当用户单击发布者的编辑按钮时 我希望他们转到具有标准编辑字段的页面 但在表单下方还有一个
  • Spring Batch JdbcPagingItemReader 似乎没有执行所有项目

    我正在开发一款应用程序 该应用程序从 Oracle 数据库中提取记录 然后将其导出为单个表格文件 但是 当我尝试使用 JdbcPagingItemReader 从数据库读取数据并写入文件时 我仅获得 pageSize 中指定的记录数 因此
  • R:根据条件的行值填充data.frame中的新列?

    我想根据行中的值在 data frame 中创建新列 如果 type 不等于 a 则我的 new area 列应包含来自 a 类型的 area 的数据 这是针对多个 距离 的 Example create data frame distan
  • Jruby:NameError:未初始化的常量 Neo4j

    我从 git 运行了这个例子 https github com andreasronge neo4j require rubygems require neo4j Neo4j Transaction run do node Neo4j No
  • useLocation 无法识别状态

    我开始使用react router 我发现我可以在 Link 组件中传递 props 以便某些值可以传递到另一个组件 我正在使用的按钮内发送一个名为 value 的组件 但是在接收该参数的组件中会显示一条错误消息 其中包含消息 对象可能为空
  • R - lubridate:将持续时间分割为“子持续时间”

    我有一个 R 整洁的数据集my durations其中数据框中的每个案例对应于在一段时间内采集的样本 如下所示 gt glimpse my durations Observations 300 Variables 5 sample id
  • 如何使用 Sys.Date() 获取上一年(2020 年)的摘录?

    Sys Date 给出今天的月 年和日期 2021 08 09 但是我该如何使用Sys Date 获取上一年 2020 的提取信息 谢谢你 Every Date or Datetime对象可以转换为POSIXlt其中 请参阅帮助 有许多子组
  • 从 Bash 中的行中删除中间的 n 个字符

    我正在尝试剪掉文件中每一行的中间部分 所有的行都是这样的 79 472850 97 SILENCE 我需要结束 79 472850 SILENCE 由于每行都有从字符 10 开始到字符 14 结束的不需要的部分 我试图以这种方式使用 sed
  • _IContactsAndGroupsCallback.OnLookUp

    我想按照以下指南为 Office 提供 IM 状态等http msdn microsoft com en US library office jj900715 aspx off15 IMIntegration ImplementRequir
  • Android 的 sqlite 加密

    我正在努力寻找在 Android 设备上加密我的 sqlite 数据库的可能性 但我无法找到令人满意的解决方案 我需要类似库之类的东西来引用 以便在使用正常的 sqlite 函数时对我的数据库进行 动态 加密 解密 我不想在存储之前加密数据
  • JTextArea不显示文本

    在我在文本区域中显示文本的函数中 我编写了以下代码行 但它没有显示任何文本 jTextArea1 setText Packet n jTextArea1 getText 我正在使用 swingworker 来执行后台任务 这是我的代码 pu
  • UIImage 将原始像素从白色更改为透明?

    我已经尝试了每个问题的一些代码 如何使 UIImage 上的一种颜色透明 如何遮盖 UIImage 以使白色在 iphone 上变得透明 但没有成功 不幸的是 使用核心图形和图像并不是我的强项 我将如何访问 UIImage 的原始数据并将白
  • android loadIcon 生成 outOfMemoryError

    我只有一点点ListView包含所有已安装的应用程序及其图标但如果安装了太多应用程序 我会遇到outOfMemoryErrors在做的时候 Drawable app icon applicationInfoList get i loadIc
  • 禁用 RichTextBox WF 上的删除按钮

    我试图禁止人们删除 Richtextbox 中的文本框 该项目使用windows窗体 这是我的代码 private void Form1 Load object sender EventArgs e richTextBox1 KeyPres
  • 如何在 Android 中运行媒体扫描仪

    我想在捕获图像时运行媒体扫描仪 捕获后 图像会在网格视图中更新 为此 我需要运行媒体扫描仪 我找到了两个解决方案来运行媒体扫描仪一个是播送事件 另一个是运行媒体扫描仪类 我认为在 Ice Cream Sandwich 4 0 中引入了媒体扫
  • Mac 上的 TensorFlow 安装错误

    我想在我的 Mac 上通过 PyCharm 使用 TensorFlow 但是当我使用时 pip install https storage googleapis com tensorflow mac tensorflow 0 5 0 py2
  • 如何在Python中设置线程特定的环境变量?

    我想创建两个 或更多 线程 并在每个线程中执行不同的外部程序 比方说aaa and bbb 这些外部程序需要位于不同目录中的库 比方说 aaalib and bbblib 所以我必须设置环境变量LD LIBRARY PATH在执行它们之前