文件输入在Python中是线程安全的吗?

文件输入在Python中是线程安全的吗?,python,multithreading,file,Python,Multithreading,File,在Python2中,使用以下代码从单个不变的磁盘文件读取多个线程是否安全: with open( pathname, 'rb' ) as f: f.seek( file_position ) data = f.read( number_of_bytes ) 没有进程具有或将具有该文件的写入权限 显然,以这种方式读取文件不是原子的。Python2文档没有(我可以找到)关于文件对象和线程的内容。以下是seek方法的文档: 这对于我的系统来说是一个关键问题,因此如果能够提供文档指针

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

with open( pathname, 'rb' ) as f:
    f.seek( file_position )
    data = f.read( number_of_bytes )
没有进程具有或将具有该文件的写入权限

显然,以这种方式读取文件不是原子的。Python2文档没有(我可以找到)关于文件对象和线程的内容。以下是
seek
方法的文档:

这对于我的系统来说是一个关键问题,因此如果能够提供文档指针,那将是令人放心的


谢谢。

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

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

谢谢。最后一句话很关键,因为它说Python文件对象彼此独立,即使它们与磁盘上的文件存在多对一关系。谢谢。最后一句话很关键,因为它说Python文件对象彼此独立,即使它们与磁盘上的文件存在多对一关系。