Я хочу создать два (или более) потока и в каждом из них выполнить другую внешнюю программу, допустим, aaa
и bbb
. Эти внешние программы нуждаются в библиотеках, расположенных в разных каталогах, скажем, в /aaalib
и /bbblib
, поэтому перед выполнением их необходимо установить переменную окружения LD_LIBRARY_PATH
. Я хочу избежать использования оболочки, поэтому такие решения, как выполнение LD_LIBRARY_PATH=/aaalib aaa
, не очень хорошие.Как установить переменную среды, специфичную для потока, в Python?
Вопрос: как установить os.environ['LD_LIBRARY_PATH']
таким образом, чтобы он имел разные значения в разных потоках?
PS. Я попробовал решение 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