基於多執行緒的乙個檔案複製練習

2021-10-01 07:30:53 字數 1407 閱讀 9469

from threading import thread,lock

import os

from time import sleep

lock =

lock()

urls=

["/home/tarena/桌面/"

,"/home/tarena/模板/"

,"/home/tarena/**/"

,"/home/tarena//",,

,]filename =

input

("file:"

)explor =

# 儲存有目標檔案的路徑

for i in urls:

# 哪個路徑下有目標

if os.path.

exists

(i+filename)

: explor.

(i+filename)

path_num =

len(explor) # 有幾處資源

if path_num ==0:

print

("沒有資源"

) os.

_exit(0

)file_size = os.path.

getsize

(explor[0]

) # 檔案大小

block_size = file_size // path_num + 1 # 每塊的大小

# 本地檔案開啟

fd =

open

(filename,

'wb'

)# 拷貝檔案

def load

(path,num)

:"""

"""f =

open

(path,

'rb'

) seek_bytes = block_size * num

f.seek

(seek_bytes) # 從開頭向後偏移一定的大小

data = f.

read

# 寫檔案

with lock:

fd.seek

(seek_bytes)

fd.write

(data)

jobs =

num =

0 # 第幾塊

for path in explor:

t =thread

(target=load,args=

(path,num)

) jobs.

(t) t.

start()

num +=1

[i.join()

for i in jobs] # **執行緒

注:可以將同名不同路徑的檔案分塊複製到本地資料夾

C C 實現乙個多執行緒複製的cp命令

int pthread create pthread t thread,const pthread attr t attr,void start routine void void arg 功能 建立執行緒 thread 用於獲取執行緒id,是輸出型的引數 attr 執行緒的屬性,一般寫null採用...

乙個多執行緒程式

這個程式會讓你深刻的體會時間片,執行緒的優先順序!建議多測試這個程式,一定要看下面的注。using system using system.collections.generic using system.text using system.threading namespace 乙個多執行緒程式 ...

乙個多執行緒程式

這個程式會讓你深刻的體會時間片,執行緒的優先順序!建議多測試這個程式,一定要看下面的注。using system using system.collections.generic using system.text using system.threading namespace 乙個多執行緒程式 ...