发布于2026-07-29 阅读(0)
扫一扫,手机访问
在多线程编程中,文件复制往往是个容易被忽视的瓶颈。单线程处理大文件时,CPU资源利用率低,等待时间全耗在I/O上了。而 copysrc 这个工具就是专门为解决这个问题设计的——它能把一个大文件切成若干小块,然后让多个线程并行复制,让多核处理器真正各司其职,大幅提升效率。
下面用一个简单的例子,看看怎么用 copysrc 实现多线程文件复制。
copysrc。如果还没装,打开终端跑一句:pip install copysrc
multithreaded_copy.py,把下面的代码贴进去:import os
import threading
from copysrc import copy_file
def copy_chunk(src, dst, start, end):
with open(src, 'rb') as fsrc:
fsrc.seek(start)
data = fsrc.read(end - start)
with open(dst, 'wb') as fdst:
fdst.write(data)
def main():
src_file = 'source.txt'
dst_file = 'destination.txt'
num_threads = 4
if not os.path.exists(src_file):
print(f"Source file {src_file} does not exist.")
return
file_size = os.path.getsize(src_file)
chunk_size = file_size // num_threads
threads = []
for i in range(num_threads):
start = i * chunk_size
end = (i + 1) * chunk_size if i < num_threads - 1 else file_size
t = threading.Thread(target=copy_chunk, args=(src_file, dst_file, start, end))
threads.append(t)
t.start()
for t in threads:
t.join()
print("File copied successfully.")
if __name__ == '__main__':
main()
这段代码的核心逻辑很清晰:先定义一个 copy_chunk 函数,专门负责复制文件中的某一段。然后在 main 函数里根据线程数把原始文件均分,每个线程负责自己的那一块,最后等所有线程都跑完,打印出成功提示。
要运行的话,命令行里敲:
python multithreaded_copy.py
默认会用 4 个线程复制 source.txt 到 destination.txt。当然,线程数可以按实际需求调整,比如文件特别大或者 CPU 核心数多,可以适当增加线程数。不过需要注意,线程数并不是越多越好,测试一下找到最优值会更稳妥。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8