【python隨筆】之【多程式並行統計多個cvs檔案行數】

AA8j發表於2020-10-24

可以參考上一篇多執行緒併發修改之:

import multiprocessing
import os
import csv


class MyProcess:
    def __init__(self, path):
        # 路徑
        self.path = path
        # 行數
        self.line = -1
        # 建立程式
        self.p = multiprocessing.Process(target=self.count())

    def count(self):
        # 讀取檔案
        reader = csv.reader(open(self.path, 'r'))
        count_lines = 0
        for item in reader:
            count_lines += 1
        self.line = count_lines

    def start(self):
        self.p.start()

    def join(self):
        self.p.join()


if __name__ == '__main__':
    dir_path = r'00test'  # 要統計的所有檔案的目錄
    file_list = os.listdir(dir_path)  # 所有檔案列表
    process_list = []  # 程式列表
    # 遍歷所有檔案列表
    for file_name in file_list:
        # 每個檔案的路徑
        file_path = dir_path + '\\' + file_name
        # 建立讀取這個檔案行數的程式
        process = MyProcess(file_path)
        process.start()  # 程式開始統計
        process_list.append(process)  # 將此程式加入執行緒列表
    # 等待所有程式結束
    for pro in process_list:
        pro.join()
    # 將統計個數裝入列表
    line_list = []
    for pro in process_list:
        line_list.append(pro.line)
    # 列印統計列表
    print(line_list)

相關文章