python中的多程序拷貝文本文

2021-09-10 02:57:17 字數 2337 閱讀 9978

**描述:

拷貝的原理:

1). 讀取原始檔的內容;

2). 寫入新的檔案中;

import os

import time

import multiprocessing # 進行程序間的通訊, queue

from queue import queue

def copyfiletask(oldfoldername, newfoldername, filename, queue):

"""import os

# 拼接生成絕對路徑

os.path.join('/mnt', 'file')

'/mnt/file'

os.path.join('/mnt/', 'file')

'/mnt/file'

:param oldfoldername: /root/day21/

:param newfoldername: /root/day21_backup_201901

:param filename: file1

:return:

"""# 兩者相同的效果, with語句執行節航速後, 自動關閉檔案物件;

# with open('/etc/passwd') as f:

# pass

# f = open('/etc/passwd')

# with f:

# pass

fr = open(os.path.join(oldfoldername, filename), 'rb')

fw = open(os.path.join(newfoldername, filename), 'wb')

with fr, fw:

content = fr.read(1024*3)

while content:

fw.write(content)

queue.put(filename)

# print(queue.qsize())

def main():

# 判斷備份目錄是否存在

while true:

# oldfoldername = input("請輸入備份的目錄名:")

oldfoldername ="/var/log/"

if os.path.exists(oldfoldername):

break

datename = time.strftime('_%y_%m_%d_%h_%m') # '2019_01_20'

newfoldername = oldfoldername + '_備份' + datename

if os.path.exists(newfoldername):

os.rmdir(newfoldername)

# 新建備份的目錄;

os.mkdir(newfoldername)

print("正在建立備份目錄%s....." % (newfoldername))

# 獲取備份目錄中的所有檔名;

filenames = os.listdir(oldfoldername)

# 佇列, 儲存已經備份的檔案;

# ****如果是用程序池,那麼就需要使用manager().queue()佇列才能在各子程序間通訊,否則沒用

queue = multiprocessing.manager().queue()

# queue = queue()

pool = multiprocessing.pool(4)

for name in filenames:

# 給程序池分配任務

newfoldername,

name,

queue))

# 100個檔案, 1個檔案 1%

num = 0 # 當前備份的檔案數

allnum = len(filenames) # 總備份的檔案數

# print(num, allnum)

while num < allnum:

# print(queue.qsize())

queue.get()

num += 1

copyrate = num / allnum # 0.2322

# \r使得游標不換行;

print("\r\r備份的進度為%.2f%%" % (copyrate * 100), end='')

pool.close()

pool.join()

print("備份成功;")

if __name__ == '__main__':

main()

多程序檔案拷貝

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

Python中的多程序

編寫完的 沒有執行時稱為程式,正在執行的 稱為程序。程式是死的 靜態的 程序是活的 動態的 作業系統輪流讓各個任務交替執行,由於cpu的執行速度實在是太快了,我們感覺就像所有任務都在同時執行一樣。多程序中,每個程序中所有資料 包括全域性變數 都各自擁有乙份,互不影響。例如 我們啟動了qq,qq就是乙...

python中的多程序

import multiprocessing import time deffunc arg pname multiprocessing.current process name pid multiprocessing.current process pid print 當前程序id d,name ...