python 15 程序池之資料夾拷貝器

2021-09-02 05:46:07 字數 2084 閱讀 9801

1.匯入模組

import ,multiprocessing

2.建立程序池

pool=multiprocessing.pool(3)

3 . 指派函式並開始執行

4· 檢視當前程序池名稱,id

print(multiprocessing.current_process()) / 檢視當前程序名稱

print(multiprocessing.current_process().pid) / 檢視當前程序id

5 . 任務完成後,關閉程序池

multiprocessing.close() */ 使程序池不再接收新的任務 *

6 . 主程序等待程序池完成

pool.join() /讓主程序等待程序池中所有程序結束後再結束。同步方式下不用寫,由於主程序的特性,當發現有乙個子程序結束便結束,而同步方式是有序的,當程序池中最後乙個程序完成了任務,便結束了程序池,主程序發現後便結束任務了;而非同步方式中有多個程序在同時執行,主程序發現其中乙個程序結束後就結束了,而此時還有其他程序沒有完成任務,所以需要新增 pool.join 來讓主程序等待程序池結束。

import os,shutil,multiprocessing

defcopy_func

(source_dir,dest_dir,file_name)

:print

(multiprocessing.current_process())

# 檢視當前執行的程序名稱

source_path=source_dir+

'/'+file_name # 拼接出 原始檔 位址

dest_path=dest_dir+

'/'+file_name # # 拼接出 目標檔案 位址

with

open

(source_path,

'rb'

)as file_source:

with

open

(dest_path,

'wb'

)as file_dest:

while

true

: content=file_source.read(

1024

)if content:

# 判斷是否讀完檔案內容

file_dest.write(content)

else

:print

('%s讀取完成'

% file_name)

break

if __name__ ==

'__main__'

: pool=multiprocessing.pool(3)

# 建立程序池,包含3個程序

if os.path.isdir(

'./text1'):

# 判斷資料夾是否存在,這是為了避免在測試的時候不斷建立刪除而優化的操作

shutil.rmtree(

'./text1'

)print

('刪除了資料夾'

) os.mkdir(

'./text1'

) source_dir=

'./text'

# 源資料夾 位址

dest_dir=

'./text1'

# 目標資料夾 位址

file_name_pwd=os.listdir(source_dir)

# 獲取源資料夾中所有檔案的名字列表

for file_name in file_name_pwd:

(source_dir,dest_dir,file_name)

)# 程序池應用函式,並啟動

pool.close(

) pool.join(

)

資料夾copy器 (用程序池實現)

usr bin env python coding utf 8 import multiprocessing import os,time,random defcopy file q,file name,old folder name,new folder name 完成copy任務 print 從...

手寫用程序池複製資料夾模型

importos importshutil importmultiprocessing importtime 檔案拷貝任務 defcopy work src dir,dst dir,file name 檢視程序物件 pid multiprocessing.current process pid pr...

資料夾 Python自動整理資料夾

以下是具體的 name 自動把指定目錄下的檔案進行整理 author 唐朝品鑑 date 2020年8月25日 description 自動把指定目錄下的檔案進行整理,根據字尾名自動建立資料夾,並把對應的檔案移動到對應資料夾中 import os from os import path 以下是具體的...