• 线程_multiprocessing实现文件夹copy器


    import multiprocessing
    import os
    import time
    import random
    
    def copy_file(queue,file_name,source_folder_name,dest_folder_name):
        f_read = open(source_folder_name+"/"+file_name,"rb")
        f_write = open(source_folder_name+"/"+file_name,"wb")
        while True:
            time.sleep(random.random())
            content = f_read.read(1024)
            if content:
                f_write.write(content)
            else:
                break
        f_read.close()
        f_write.close()
        # 发送已经拷贝完毕的文件名字
        queue.put(file_name)
    
    def main():
        # 获取要复制的文件夹
        source_folder_name = input("请输入要复制的文件夹名字:")
        # 整理目标文件夹
        dest_folder_name = source_folder_name + "副本"
        # 创建目标文件夹
        try:
            os.mkdir(dest_folder_name)#创建文件夹
        except:
            pass
        # 获取这个文件夹中所有的普通文件名
        file_names = os.listdir(source_folder_name)
        # 创建Queue
        queue = multiprocessing.Manager().Queue()
        # 创建线程池
        pool = multiprocessing.Pool(3)
        for file_name in file_names:
            # 向线程池中添加任务
            pool.apply_async(copy_file,args=(queue,file_name,source_folder_name,dest_folder_name))#不堵塞执行
            # 主进程显示进度
            pool.close()
    
            all_file_num = len(file_names)
            while True:
                file_name = queue.get()
                if file_name in file_names:
                    file_names.remove(file_name)
    
                copy_rate = (all_file_num - len(file_names)) * 100 / all_file_num
                print("
    %.2f...(%s)" % (copy_rate, file_name) + " " * 50, end="")
                if copy_rate >= 100:
                    break
            print()
    
    if __name__ == "__main__":
                main()

    2020-05-07

  • 相关阅读:
    HDU5643-King's Game
    KM算法详解+模板
    二分图最大匹配(匈牙利算法)
    二分图判断(交叉染色)
    能被2、3、4、5、6、7、8、9 等数整除的数的特征
    Codeforces Round #306 (Div. 2) ABCDE(构造)
    HDU5627--Clarke and MST (bfs+位运算)
    Educational Codeforces Round 82 (Rated for Div. 2)
    2020 CCPC Wannafly Winter Camp Day5
    Codeforces Round #618 (Div. 2)
  • 原文地址:https://www.cnblogs.com/hany-postq473111315/p/12845531.html
Copyright © 2020-2023  润新知