python3多进程写时拷贝_python利用进程池,多进程拷贝文件
#!/usr/bin/evn python
#Author:ELSON_ZENG
import os,time
import multiprocessing
def copy_file(queue, file_list, old_folder_name, new_folder_name ):
"""完成文件的复制"""
#print("===>copy文件:从%s ---> %s 文件名是:%s" %(old_folder_name, new_folder_name,file_list))
f_read = open(os.path.join(old_folder_name,file_list),'rb')
f_write = open(os.path.join(new_folder_name,file_list),'wb')
while True:
content = f_read.read(1024)
if content:
f_write.write(content)
else:
break
f_write.close()
f_read.close()
#拷贝完文件,那么就想队列中写入一个消息
queue.put(file_list)
def main():
#1、获取用户要copy的文件夹的名字
old_folder_name = input("请输入要copy的文件夹名字:")
proccess_num = int(input("请输入要开启的进程数量:"))
#2、创建一个新的文件夹
try:
new_folder_name = old_folder_name + '_RS'
os.mkdir(new_folder_name)
except:
pass
#3、获取文件夹的所有的待copy的文件名字 listdir()
file_lists = os.listdir(old_folder_name)
#4、创建进程池
p = multiprocessing.Pool(proccess_num)
# 5、 创建队列
queue = multiprocessing.Manager().Queue()
#5、向进程池中添加copy文件的任务
for file_list in file_lists:
p.apply_async(copy_file, args=(queue, file_list, old_folder_name, new_folder_name ))
print('-----start-----')
p.close()
start_time = time.time()
#p.join()
file_num = len(file_lists)
copy_num = 0
while True:
file_name = queue.get()
copy_num += 1
stop_time = time.time()
print('\r拷贝进度为 %.2f %%, 总耗时 %d 秒。' %(copy_num/file_num*100,stop_time - start_time),end = '')
if file_num == copy_num:
break
print('\n-----stop------')
if __name__ == "__main__":
main()
python3多进程写时拷贝_python利用进程池,多进程拷贝文件相关推荐
- 利用进程池多进程爬取人人车信息
下面例子是爬取人人车车辆信息. 多线程/多进程:提高代码的执行效率,放在爬虫中就是提高爬取效率.因为可以使用多个进程同时对多个页面发起请求.from urllib.request import url ...
- python3多进程写时拷贝_Python实现多进程的详解(附示例)
本篇文章给大家带来的内容是关于Python实现多进程的详解(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. fork函数创建子进程 基本使用 Linux 操作系统提供了一个 ...
- python3多进程写时拷贝_python多进程实现复制文件
[Python] 纯文本查看 复制代码''' 多进程实现复制文件 步骤: (1)获得源文件夹路径: (2)获取源文件夹下各文件的文件名 (3)获得目标文件夹 (4)复制文件(文件夹不能复制) 新增内容 ...
- python进程池的实现原理_Python基于进程池实现多进程过程解析
1.注意:pool必须在 if __name__ == '__main__' 下面运行,不然会报错 2.多进程内出现错误会直接跳过该进程,并且默认不会打印错误信息 3.if__name__下面的数据需 ...
- python并行计算进程池通信_Python使用进程池管理进程和进程间通信
与线程池类似的是,如果程序需要启动多个进程,也可以使用进程池来管理进程.程序可以通过 multiprocessing 模块的 Pool() 函数创建进程池,进程池实际上是 multiprocessin ...
- python部落翻译_python利用google翻译 翻译字幕文件
python使用谷歌翻译api 翻译字幕文件 英文字幕确实让人头疼,因此,花了一天专门研究,用python实现了比较简单的翻译代码.仅有几十行 首先加载模块 pip uninstall googlet ...
- Python进程池Pool的使用
1.进程池Pool 需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态成生多个进程,但如果是上百甚至上千个目标,手动的去创建进程的工作量巨大,此时就可以用到m ...
- 进程共享(读时共享写时复制)
父子进程之间在刚fork后.父子相同处: 全局变量..data..bbs..text.栈.堆.环境变量.用户ID.宿主目录(进程用户家目录).进程工作目录.信号处理方式等等,即0~3G的用户空间是完全 ...
- Python3.5 queue 模块详解 和 进程间通讯
queue - A synchronized queue class:https://docs.python.org/3/library/queue.html 菜鸟教程 - Python3 多线程:h ...
最新文章
- 北大高材生割美国韭菜被FBI通缉?本人回应予以否认
- python 网页解析库 beautifulsoup4 简介
- autosys start_mins
- spectral hashing--谱哈希源码解析
- Js获取短信验证码前段效果
- Linux与时间相关的结构体及相关用法
- Java 答疑:编译器和解释器有何区别?Java 语言属于编译型编程语言还是解释型编程语言?
- Java笔记-解决java.lang.ClassCastException: javax.xml.bind.JAXBElement cannot be cast to
- 了解库开发,我们从STM32标准库开发学起
- powershell一行代码批量修改文件名(附命令详解)
- 关于vue2用vue-cli搭建环境后域名代理的http-proxy-middleware解决api接口跨域问题
- shell多线程执行ping
- 初涉springboot(一)
- RT-Thread源码学习第六篇,线程调度器(1)
- 常用的 T-SQL 语言
- 强大的RSS阅读器 Reeder 4 for Mac 4.1.1
- https://www.cnblogs.com/skywang12345/category/455711.html
- MATLAB图像灰度图处理
- #创建虚拟机器人URDF模型
- 观远数据苏春园:五年AI+BI路,数智化破局中的变与不变|数据猿采访