python 多线程写入文件

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()获取这个文件对象,传递给各个线程使用!


另外一种方式:

如果对文件的大小,事先是不知道的,仅仅可以参考里面有多少行,具体的大小,不知道的时候怎们办呢。

解决方法可以是:按行进行分批,每个线程下载固定的行数,到不同的缓存文件中,然后对文件进行拼接获取完整文件!此时可以根据线程数量进行多倍效率的提高!

注意:在进行一些文件操作的时候,过多的打印一些输出到控制台会影响程序的效率,一定注意!

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值