以线程安全的方式使用包中的文件

时间:2015-11-29 03:02:57

标签: python multiprocessing

我正在制作一个使用数据文件的python包。我在setup.py中添加数据文件,如:

from setuptools import setup, find_packages
setup(
    name='foo',
    version='1.0',
    packages=find_packages(),
    package_data={
        'foo': ['test.txt'],
    },
)

文件排列如下:

/
    foo/
        __init__.py
        foo_module.py
        test.txt
    setup.py

但像这样的代码

open('test.txt')
当我从包外面调用它时,foo_module.py中的

停止工作。我相信这是因为我改变了我当前的工作目录,而且我的cwd中没有文件test.txt。我想我可以通过更改包代码中的当前目录来解决这个问题,如下所示:

curdir = os.getcwd()
os.chdir(os.path.dirname(os.path.abspath(__file__)))
open('test.txt')
os.chdir(curdir)

但是我不确定这个代码在多处理过程中是否可以安全使用,因为它修改了cwd。我可以使用锁,但我不希望进程只是因为它们改变cwd而等待彼此。

是否有传统的线程安全方式来访问setup.py中添加到包中的文件?

0 个答案:

没有答案