【问题标题】:Is file-input thread-safe in Python?Python中的文件输入线程安全吗?
【发布时间】:2017-09-23 23:02:01
【问题描述】:

在 Python2 中,使用以下代码从单个不变的磁盘文件中读取多个线程是否安全:

with open( pathname, 'rb' ) as f:
    f.seek( file_position )
    data = f.read( number_of_bytes )

没有进程拥有或将拥有该文件的写权限。

显然,以这种方式读取文件不是原子的。 Python2 文档对文件对象和线程只字未提(我能找到)。以下是seek 方法的文档:

https://docs.python.org/2/library/stdtypes.html?highlight=seek#file-objects

这对我的系统来说是一个关键问题,所以如果可以提供指向文档的指针,那将是令人放心的。

谢谢。

【问题讨论】:

    标签: python multithreading file


    【解决方案1】:

    如果每个线程都执行你给出的代码,它们会分别打开文件,这是安全的。我不确定要向您推荐哪些文件;这只是允许进程多次打开同一个文件的结果。您可能不在 POSIX 系统上,但作为参考,它将 open file description 描述为由 open() 创建的东西(用 C 语言,但由 Python 包装),它保存文件偏移量和与访问文件相关的其他信息。

    【讨论】:

    • 谢谢。您的最后一句话很关键,因为它说 Python 文件对象彼此独立,即使它们与磁盘上的文件存在多对一关系。
    猜你喜欢
    • 1970-01-01
    • 2011-08-24
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多