python多執行緒案例之多工copy檔案完整例項

2022-10-04 11:54:10 字數 1500 閱讀 9644

import os

import multiprocessing

def copy_file(q,file_name, old_folder_name, new_folder_name):

"""完成檔案的複製"""

old_f = open(old_folder_name+"/"+file_name, "rb")

content = old_f.read()

old_f.close()

new_f = open(new_folder_name+"/"+file_name, "wb")

new_f.write(content)

new_f.close()

# print("從%s--->到%s 複製檔案%s成功!" % (old_folder_name, new_folder_name, file_name))

q.put(file_name)

def main():

# 1.獲取使用者要copy的資料夾名稱

old_folder_name = input("請輸入要copy的資料夾:")

# 2.建立乙個新的資料夾

try:

new_folder_name = old_folder_name + "復件"

os.mkdir(new_folder_name)

except:

pass

# 3.獲取所有待copy的檔名稱 listdir()

file_names = os.listdir(old_folder_name)

print(file_names)

# 4.建立程序池

po = multiprocessing.pool(2)

# 5.建立乙個佇列

beueorsv q = multiprocessing.manager().queue()

# 6.向程序池中新增copy檔案的任務

for file_name in file_names:

po.apply_async(copy_file, args=(q,file_name, old_folder_name, new_folder_name))

po.close()

# po.join()

all_file_nubeueorsvm = len(file_names) # 統計所有的檔案個數

copy_ok_num = 0

while true:

www.cppcns.comfile_name = q.get()

# print("已經完成copy :%s" % file_name)

copy_ok_num += 1

print("\r複製的進度為:%.2f %%" % (copy_ok_num*100/all_file_num),end='')

if copy_ok_num >= all_file_num:

break

if __name__ == '__main__':

main()

python多工 執行緒

併發 指的是任務數多餘cpu核數,通過作業系統的各種任務排程演算法,實現用多個任務 一起 執行 實際上總有一些任務不在執行,因為切換任務的速度相當快,看上去一起執行而已 並行 指的是任務數小於等於cpu核數,即任務真的是一起執行的 執行緒python的thread模組是比較底層的模組,python的...

多工和多執行緒 1

建立乙個執行緒的api函式叫做createthread hthread createthread security attributee,dwstacksize,threadproc,pparam,dwflags,idthread 大部分的windows程式設計師都會傾向於使用c的執行時庫函式 be...

Shell 實現多執行緒(多工)

bin bash all num 10 a date h m s for num in seq1 do done b date h m s echo e starttime t a echo e endtime t b 在命令的末尾加 符號,則命令將在後台執行,這樣後面的命令不需要等待該命令執行完再...