Python多线程与单线程处理大文件的性能差异【附图】
2013-06-25 18:02
447 查看
今天写了一段Python多线程处理文件的代码,用以比较单线程和多线程在处理较大文件时的速度差异
代码解释:
1-3行:导入需要用到的模块os,threading,ctime
4-11行:从列表list中取得文件名,并计算出该文件的行数
15-22行:取得当前工作路径下的所有文件,并从中筛选出txt文件
28-33行:创建线程
34-35行:调用start()函数,一起启动线程:同步性
注意:在读取文件的时候,我没有使用read分批读入,而是使用readlines,所有运行的时候,可能会比较卡,读者也可以修改下代码的第9行
单线程和多线程处理较大文件的速度对比:
每个文本文件的行数大约都在100万行左右,通过以上的对比,我们从中就能很明显的发现多线程处理大文件的优势所在
代码如下:
原创文章:WEB开发_小飞
转载请注明出处:http://www.cnblogs.com/hongfei/archive/2012/04/14/python-multithread-document.html
代码解释:
1-3行:导入需要用到的模块os,threading,ctime
4-11行:从列表list中取得文件名,并计算出该文件的行数
15-22行:取得当前工作路径下的所有文件,并从中筛选出txt文件
28-33行:创建线程
34-35行:调用start()函数,一起启动线程:同步性
注意:在读取文件的时候,我没有使用read分批读入,而是使用readlines,所有运行的时候,可能会比较卡,读者也可以修改下代码的第9行
单线程和多线程处理较大文件的速度对比:
每个文本文件的行数大约都在100万行左右,通过以上的对比,我们从中就能很明显的发现多线程处理大文件的优势所在
代码如下:
1 import os 2 import threading 3 from time import ctime 4 def loop(loops,list):#list存放着每个线程需要处理的文本文件名 5 print '线程%d处理的文件列表%s\n'%(loops+1,list) 6 list_len=len(list) 7 for i in range(list_len): 8 f=open(list[i]) 9 rows=len(f.readlines())#此处,我直接将整个文件读入,所以会比较卡,可以在此设置每次读入的大小 10 f.close() 11 print '文件%s__%d行\n'%(list[i],rows) 12 13 def main(): 14 print 'all start at:',ctime() 15 cwd=os.getcwd() 16 dir_list=os.listdir(cwd) 17 file_list=[] #该列表用来存放当前目录下的所有txt文件 18 print '当前文件夹下的所有txt文件:' 19 for l in dir_list: 20 if l.rfind('txt')>=0: 21 print ' ',l 22 file_list.append(l) 23 threads=[] 24 threads_num=4 #线程数 在此处修改下线程数就可以比较多线程与单线程处理文件的速度差异 25 print '共有线程数:%d个'%threads_num 26 per_thread=len(file_list)/threads_num #每个线程处理的文本数量 27 print per_thread 28 for i in range(threads_num): 29 if threads_num-i==1: #最后一个线程,分担余下的所有工作量 30 t=threading.Thread(target=loop,args=(i,file_list[i*per_thread:])) 31 else: 32 t=threading.Thread(target=loop,args=(i,file_list[i*per_thread:i*per_thread+per_thread])) 33 threads.append(t) 34 for i in range(threads_num): 35 threads[i].start() 36 for i in range(threads_num):#等待所有的线程结束 37 threads[i].join() 38 print 'all end at:',ctime() 39 if __name__=='__main__': 40 main()
原创文章:WEB开发_小飞
转载请注明出处:http://www.cnblogs.com/hongfei/archive/2012/04/14/python-multithread-document.html
相关文章推荐
- Python实现模拟分割大文件及多线程处理的方法
- Windows 窗体控件中的多线程处理之:如何使用后台线程搜索文件
- python 模拟分割大文件后,多线程处理
- Python 读取键盘输入字符,多线程操作,文件操作随机处理 开发范例
- 使用RandomAccessFile和多线程来实现开启三个线程去复制一个文件
- python多线程编程—创建线程
- Python文件处理之文件写入方式与写缓存(三)
- hadoop streaming python 处理 lzo 文件遇到的问题
- 20.python的文件处理
- Python 线程,用类实现多线程,join阻塞主线程
- Python之文件处理
- Python遍历文件夹 处理json文件
- python之小白的多线程小练习-利用多线程拷贝文件夹中的所有文件
- python基础---文件处理
- python 多线程中的守护线程与join的用法
- python处理blog文件数据
- 016--python文件处理
- python 文件和文件夹处理
- Python recipe(10):逐段处理文件
- Python 简单文件处理