多线程和单线程拷贝文件那个效率高

问题描述

多线程和单线程拷贝文件那个效率高

单线程拷贝一个文件和多线程拷贝一个文件,那个效率更高,求大神写个例子证明一下。

解决方案

我菜,不会写,现在下载都是多线程的吧,看资源就知道。。。。

解决方案二:

拷贝文件的瓶颈在io,而不是cpu,多线程没有任何优势,而且对于机械硬盘,多个拷贝会导致寻道造成的性能损失。固态磁盘两者查不多。

解决方案三:

一提到多线程一般大家的第一感觉就是可以提升程序性能,在实际的操作中往往遇到性能的问题,都尝试使用多线程来解决问题,但多线程程序并不是在任何情况下都能提升效率,在一些情况下恰恰相反,反而会降低程序的性能。这里给出两个简单的例子来说明下:
import threading
from time import ctime

class MyThread(threading.Thread):
def init(self, func, args, name):
threading.Thread.__init__(self)
self.name = name
self.func = func
self.args = args

def run(self):
    print 'starting', self.name, 'at:',ctime()
    apply(self.func, self.args)
    print self.name, 'finished at:', ctime()

def fun1(x):
y = 0
for i in range(x):
y+=1

def fun2(x):
y = 0
for i in range(x):
y+=1

def main():
print 'staring single thread at:',ctime()
fun1(10000000)
fun2(10000000)
print 'finished single thread at:',ctime()

t1 = MyThread(fun1,(10000000,),fun1.__name__)
t2 = MyThread(fun2,(10000000,),fun2.__name__)
t1.start()
t2.start()
t1.join()
t2.join()

print 'all done'

if name == '__main__':
main()

    import threading

from time import ctime

class MyThread(threading.Thread):
def init(self, func, args, name):
threading.Thread.__init__(self)
self.name = name
self.func = func
self.args = args

def run(self):
    print 'starting', self.name, 'at:',ctime()
    apply(self.func, self.args)
    print self.name, 'finished at:', ctime()

def fun1(x):
for i in range(x):
fd = open('1','w')
fd.close()

def fun2(x):
y = 0
for i in range(x):
y+=1

def main():
print 'staring single thread at:',ctime()
fun1(15000)
fun2(50000000)
print 'finished single thread at:',ctime()

t1 = MyThread(fun1,(15000,),fun1.__name__)
t2 = MyThread(fun2,(50000000,),fun2.__name__)
t1.start()
t2.start()
t1.join()
t2.join()

print 'all done'

if name == '__main__':
main()

解决方案四:

多线程和单线程拷贝文件那个效率高

拷贝文件的瓶颈在于硬盘读写

如果你的文件都比较小的话,如几M,建议用多线程,如果文件在几个G的话,建议你用单线程

解决方案五:

单线程不会有线程同步,切换等,不过多线程可以i利用多核。

时间: 2024-10-03 03:04:20

多线程和单线程拷贝文件那个效率高的相关文章

多线程真的比单线程执行效率高吗?

问题描述 多线程真的比单线程执行效率高吗? 对于单核CPU下多线程程序在同一时间点都只能有一个线程运行,对于多核CPU可以实现真正的并发同步运行,这种说法正确吗?另外在多线程的情况下使用互斥对象来实现线程同步,这样的话多线程程序的运行效率受影响吗? 解决方案 比如说,你用多线程并行对一个数组进行累加.你用第一个线程处理前50%,另一个线程处理后50%,最后你需要汇总两个线程的结果,因为种种原因,两个线程肯定不会同时结束.那么就需要等待全部线程结束,这个等待的过程就等于单线程(先做好的阻塞住等没做

vc ++-VC 写excel文件的效率

问题描述 VC 写excel文件的效率 比如使用ole ,basicExcel ,或者其他方法,写1M需要使用的时间,其中,写了多少行,多少列我使用basicExcel 写了1M的数据一万行,6列,保存数据阶段花费了2.4s,计算机环境:window xp 512M,内存40G的虚拟机中执行的.在讲exe文件放到win8 系统时需要10s 使用ole 调用测试居然用了17s代码引用:http://www.cnblogs.com/yaowen/archive/2013/01/22/2870762.

一种提高云存储中小文件存储效率的方案

针对基于HDFS的云存储系统中小文件存储效率不高的问题,采用序列文件技术设计了一个云存储系统中小文件的处理方案.该方案利用多维属性决策理论,综合读文件时间.合并文件时间及节省内存空间大小等指标,得出合并小文件的最优方式,能够在消耗的时间和节省的内存空间之间取得平衡:设计基于层次分析法的系统负载预测算法对系统负载进行预测,从而实现负载均衡的目的:利用序列文件技术对小文件进行合并. 实验结果表明,在不影响存储系统运行状况的基础上,该方案提高了HDFS(Hadoop distributed file

字节流 字符流- 字符流 比 字节流 效率高?

问题描述 字符流 比 字节流 效率高? java老师说操作文件的时候,如果文件是文本的就用 字符流,因为 字符流 操作文本效率高. 可是 字符流 也是基于 字节流 实现的呀! 我也做过试验,copy一个文本文件,结果是字节流的速度快.... 而且 字节流 读取速度快慢取决于每次读取的字节数组大小,这样说来 字符流 完全没优势呀! 小弟java新手,问题可能有点浅薄,忘各路大虾百忙中解答下下,谢谢. 解决方案 package io;import java.io.FileInputStream;im

mfc多线程一次读写文件

问题描述 mfc多线程一次读写文件 CFile file1; int i; void CflieopenDlg::OnBnClickedOk() { // TODO: 在此添加控件通知处理程序代码 file1.Open(_T("D://vls//2.txt"),CFile::modeReadWrite); DWORD threadID; for(i = 0; i < 5; i++) { CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)T

一个jsp页面分模块展示多个数据集怎样效率高

问题描述 一个jsp页面分模块展示多个数据集怎样效率高目前的实现是依次查询保存在集合中 单个模块迭代出来 这样消耗内存非常高 且速度慢网页容易卡死 求指教?谢谢拉 解决方案 可以静态化, 把没个单元模块的数据提前生成好json文件发在那里. 这样有更新,就更新json文件就行了, 页面异步取信息个人签名:健康宝宝解决方案二:1一次返回的数据太多,可以使用ajax分几次异步返回2数据多,数据库查询慢的话可以改用redis,memcache等解决方案三:iframe ajax解决方案四:缓存 aja

java使用nio2拷贝文件的示例_java

这个程序只是为了更方便的进行拷贝文件(夹)而创造.1.可以不用新建文件夹,就像windows的复制粘贴一样简单.2.有简单的出错重连机制3.不需要重复拷贝,差异化复制文件.4.拷贝文件夹的时候可以不用复制全路径,只关注需要拷贝的文件夹.5.程序做了简单的必要检查,效率也不算低.6.使用的是7的nio2的新API. 复制代码 代码如下: import java.io.IOException;import java.nio.file.FileVisitResult;import java.nio.f

Linux系统之间拷贝文件的方法总结

首先,无论本地还是远程,需要移动或拷贝的文件较多且都不太大时,用cp命令和mv命令效率较低,可以先使用tar工具对将要拷贝/移动的内容进行打包/压缩,之后再进行拷贝/移动,最后再解包/解压缩. 另外,也是很关键的一个技巧,即,不必在tar打包/压缩完毕之后再进行拷贝,解包/解压缩,可以通过管道一边打包/压缩另一边执行拷贝解包/解压缩. 比如,tar命令可以和nc命令结合可以快速在两台机器之间传输文件和目录: B机器: nc -l 5555 |tar -C /tmp/test/ -xf - A机器

跨网络拷贝文件的简单实践

在实际的项目中可能要访问生产环境是需要各种安全验证和设置的,毕竟客户的数据是最宝贵的资源.一般来说,客户会把一部分访问的权限开放出来.这样在系统出现问题的时候,能够更快更高效的处理问题. 下面是一个简单的图表,能够说明一下其中一个项目的网络访问情况.右边的绿色区域是公司内部的环境,其中生产问题复现环境的权限较高,这个权限只会分配给部分的人,而开发测试环境是公开环境,开发测试人员都可以访问. 左边的区域是现场环境,生产环境包括现网环境和容灾切换环境,这个是根据需求可以切换的.同时现场测试环境是客户