本文实例讲述了python进程池实现的多进程文件夹copy器。分享给大家供大家参考,具体如下:
应用:文件夹copy器(多进程版)
import multiprocessing import os import time import random def copy_file(queue, file_name,source_folder_name, dest_folder_name): """copy文件到指定的路径""" f_read = open(source_folder_name + "/" + file_name, "rb") f_write = open(dest_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("\r%.2f...(%s)" % (copy_rate, file_name) + " "*50, end="") if copy_rate >= 100: break print() if __name__ == "__main__": main()
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python进程与线程操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》、《Python+MySQL数据库程序设计入门教程》及《Python常见数据库操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
本文向大家介绍Python Process多进程实现过程,包括了Python Process多进程实现过程的使用技巧和注意事项,需要的朋友参考一下 进程的概念 程序是没有运行的代码,静态的; 进程是运行起来的程序,进程是一个程序运行起来之后和资源的总称; 程序只有一个,但同一份程序可以有多个进程;例如,电脑上多开QQ; 程序和进程的区别在于有没有资源,进程有资源而程序没有资源,进程是一个资源分配的
本文向大家介绍详解python之多进程和进程池(Processing库),包括了详解python之多进程和进程池(Processing库)的使用技巧和注意事项,需要的朋友参考一下 环境:win7+python2.7 一直想学习多进程或多线程,但之前只是单纯看一点基础知识还有简单的介绍,无法理解怎么去应用,直到前段时间看了github的一个爬虫项目涉及到多进程,多线程相关内容,一边看一边百度相关知识
本文向大家介绍python实现通过队列完成进程间的多任务功能示例,包括了python实现通过队列完成进程间的多任务功能示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python实现通过队列完成进程间的多任务功能。分享给大家供大家参考,具体如下: 1.通过队列完成进程间的多任务 2.进程池pool 在程序实际处理问题过程中,忙时会有成千上万的任务需要被执行,闲时可能只有零星任务。那么在
在worker中又保存了一份swProcessPool的指针,这样可以将两个不同的进程池合并在一起去wait。
本文向大家介绍Java编程实现多线程TCP服务器完整实例,包括了Java编程实现多线程TCP服务器完整实例的使用技巧和注意事项,需要的朋友参考一下 相关Java类 Socket public class Socket extends Object ServerSocket public class ServerSocket extends Object TCP服务器端 TcpServer.java
本文向大家介绍python多进程操作实例,包括了python多进程操作实例的使用技巧和注意事项,需要的朋友参考一下 由于CPython实现中的GIL的限制,python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况我们需要使用多进程。 这也许就是python中多进程类库如此简洁好用的原因所在。在python中可以向多线程一样简单地使用多进程。 一、