學習筆記 多執行緒補充

2021-09-02 20:15:34 字數 1442 閱讀 7677

在python中沒有辦法使用佇列進行傳入到pool中

這就導致如果要使用傳入佇列,那麼需要使用另外的封裝方法

使用pool和佇列模擬檔案複製

import random

import time

from multiprocessing import manager

from multiprocessing import pool

defmy_copy_read

(q,old_file)

:# 開啟檔案將檔案內容讀取出來

with

open

(old_file,

'r',encoding=

'utf-8'

)as f:

q.put(f.readlines())

# 將檔案內容讀到佇列中

# print(f'檔案讀取完成')

defmy_copy_write

(q,new_file)

: time.sleep(random.random()*

2)# 隨機0-2秒鐘

# 從佇列中拿出資料並寫入新的檔案

with

open

(new_file,

'w',encoding=

'utf-8'

)as f:

f.writelines(q.get())

# 檔案寫入完成後輸出

print

(f'新檔案寫入完成'

)if __name__ ==

'__main__'

:# 例項化佇列

q = manager(

).queue(

)# 例項化程序池,並設定程序池只允許有3個程序同時執行

pool = pool(2)

# 準備好檔案路徑列表

old_file_address =

[f'./study.py'

for i in

range(1

,8)]

# 準備好新的檔案路徑列表

for i in old_file_address:

(q,i)

)# 寫檔案

for i in

range(1

,len

(old_file_address)+1

):(q,f'./.txt'))

pool.close(

) pool.join(

)print

('總程序結束'

)

使用的是from multiprocessing import manager,在manager上面存在manager().queue()例項化乙個佇列,這個佇列的使用和常規的queue方法是一樣的,同樣具有get和put方法,

這裡本身./路徑下存在7個檔案,將檔案複製到當前目錄下並改名

多執行緒補充

標籤 空格分隔 多執行緒 pragma mark 延遲執行 void delay pragma mark 只執行一次 void once pragma mark 快速迭代 獲取 資料夾路徑和目的資料夾路徑 nsstring source users v desktop source nsstring...

多執行緒學習筆記 執行緒

thread類 常用屬性 currentthread 獲取當前正在執行的執行緒 isalive 指示當前執行緒的執行狀態 isbackground 指示是否為後台執行緒 isthreadpoolthread 指示是否屬於託管執行緒池 managedthreadid 獲取執行緒識別符號 name 獲取...

多執行緒學習筆記

多執行緒的相關概念 什麼是程序?當乙個程式開始執行時,它就是乙個程序,程序包括執行中的程式和程式所使用到的記憶體和系統資源。而乙個程序又是由多個執行緒所組成的。什麼是執行緒?執行緒是程式中的乙個執行流,每個執行緒都有自己的專有暫存器 棧指標 程式計數器等 但 區是共享的,即不同的執行緒可以執行同樣的...