多程序實現檔案拷貝

2021-08-18 02:47:39 字數 1238 閱讀 4736

import multiprocessing

import os

import shutil

""" 拷貝檔案任務:

filename: 檔名

src_dir:源目錄

dst_dir:目標目錄

"""def

copy_file

(file_name, src_dir, dst_dir):

# 原始檔的路徑

src_file_path = src_dir + "/" + file_name

# 目標檔案的路徑

dst_file_path = dst_dir + "/" + file_name

# 建立或者開啟檔案寫入檔案資料

with open(dst_file_path, "wb") as dst_file:

# 開啟原始檔獲取原始檔資料

with open(src_file_path, "rb") as src_file:

# 迴圈讀取檔案中的資料

while

true:

# 設定讀取檔案位元組大小

file_data = src_file.read(1024)

if file_data:

# 把原始檔的資料寫入到目標檔案裡面

dst_file.write(file_data)

else:

break

if __name__ == '__main__':

# 指定源檔案目錄

src_dir = "./test/"

# 指定目標檔案目錄

dst_dir = "../test/"

# 判斷目標是否存在該資料夾,存在則刪除,並新建

if os.path.exists(dst_dir):

shutil.rmtree(dst_dir)

os.mkdir(dst_dir)

# 迴圈獲源資料夾內容

file_list = os.listdir(src_dir)

# 建立程序池

pool = multiprocessing.pool(3)

# 遍歷檔名

for file_name in file_list:

# 非同步寫入檔案操作

# 關閉程序池

pool.close()

# 設定阻塞主程序,等待當前程序執行完

pool.join()

多程序檔案拷貝

下面用程式實現這樣的功能 有乙個檔案的內容需要拷貝到另乙個檔案中,以前的做法是用乙個程序來完成,下面要做的是,是兩個程序同時做這件事,乙個程序負責一半,如父程序負責拷貝檔案的前半段,子程序負責拷貝檔案的後半段。下面看一下程式的流程以及需要注意的問題 其中 要注意的是當父程序呼叫fork函式建立子程序...

Linux 實現檔案的多程序拷貝

需求 實現檔案多程序拷貝 假設有乙個超大檔案,需對其完成拷貝工作。為提高效率,可採用多程序並行拷貝的方法來實現。假設檔案大小為len,共有n個程序對該檔案進行拷貝。那每個程序拷貝的位元組數應為len n。但未必一定能整除,我們可以選擇讓最後乙個程序負責剩餘部分拷貝工作。可使用len len n 將剩...

mmap多程序拷貝檔案

include include include include include include include includeusing namespace std int main int argc,char ar stat ar 1 buf int len buf.st size 這裡必須要有讀...