在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
这对我的系统来说是一个关键问题,所以如果可以提供指向文档的指针,那将是令人放心的。
谢谢。
答案 0 :(得分:2)
如果每个线程执行您给出的代码,它们会单独打开文件,这是安全的。我不确定要提供哪些文件;这只是允许进程多次打开同一文件的结果。您可能不在POSIX系统上,但作为参考,它将open file description描述为open()
(在C中,但由Python包装)创建的东西,其中包含文件偏移量和与访问相关的其他信息文件。