python 多线程写入文件
在python中,对文件的操作时很简洁的,一般是通过打开文件,获取文件对象,然后对文件对象进行写入。
这是file 的一些常用方法:
class file(object): def close(self): # real signature unknown; restored from __doc__ pass def fileno(self): # real signature unknown; restored from __doc__ return 0 def flush(self): # real signature unknown; restored from __doc__ pass def isatty(self): # real signature unknown; restored from __doc__ return False def next(self): # real signature unknown; restored from __doc__ pass def read(self, size=None): # real signature unknown; restored from __doc__ pass def readinto(self): # real signature unknown; restored from __doc__ pass def readline(self, size=None): # real signature unknown; restored from __doc__ pass def readlines(self, size=None): # real signature unknown; restored from __doc__ return [] def seek(self, offset, whence=None): # real signature unknown; restored from __doc__ pass def tell(self): # real signature unknown; restored from __doc__ """ tell() -> current file position, an integer (may be a long integer). """ pass def truncate(self, size=None): # real signature unknown; restored from __doc__ pass def write(self, p_str): # real signature unknown; restored from __doc__ pass def writelines(self, sequence_of_strings): # real signature unknown; restored from __doc__ pass def xreadlines(self): # real signature unknown; restored from __doc__ pass
通常是通过write 直接一个挨着一个的写,如果有一天,突然想要多个线程去写一个文件,怎们办呢??
思路是这样的:
1.对于文件的大小要确定
2.并且对于每个线程的需要处理的内容大小进行划分
3.然后在各个线程里面将内容写入进去
4.需要注意的是对于每个线程,要给予一个文件对象,通常是在主线程中打开文件获得文件对象,然后复制这个文件对象的描述符,并用os.fdopen()获取这个文件对象,传递给各个线程使用!