标签:close llb 优化 src put 全局变量 mkdir 附件 成功
#1.创建一个文件夹 #2.获取old文件夹中所有的文件名字 #3.使用多进程的方式copy原文件夹中的所有文件到新文件夹中
1)ipython3 获取小知识点
2)写程序
3)测试程序
4)版本2:程序
import os #1.创建一个文件夹 old_file_name = input("请输入你要copy的文件夹:") new_file_name = old_file_name + "-附件" #print(new_file_name) os.mkdir(new_file_name) #2.获取old文件夹中所有的文件名字 #3.使用多进程的方式copy原文件夹中的所有文件到新文件夹中
1)获取知识点
In [12]: import os In [13]: os.li os.linesep os.link os.listdir os.listxattr In [13]: os.listdir("test") Out[13]: [‘17-进程池.py‘, ‘12-multiprocessing.py‘, ‘10-多个Fork.py‘, ‘04-吃包子.py‘, ‘01-多任务.py‘,‘08-全局变量.py‘, ‘11-fork多个.py‘, ‘14-join.py‘, ‘09-多个Fork.py‘, ‘02-fork.py‘]
2)写程序
3)测试
4)版本3:程序
import os #0.获取要copy的文件夹的名字 old_file_name = input("请输入你要copy的文件夹:") #1.创建一个文件夹 new_file_name = old_file_name + "-附件" #print(new_file_name) os.mkdir(new_file_name) #2.获取old文件夹中所有的文件名字 file_names = os.listdir(old_file_name) # print(file_names) #3.使用多进程的方式copy原文件夹中的所有文件到新文件夹中
from multiprocessing import Pool import os def copyFileTask(): "完成copy一个文件的功能" pass def main(): #0.获取要copy的文件夹的名字 old_file_name = input("请输入你要copy的文件夹:") #1.创建一个文件夹 new_file_name = old_file_name + "-附件" #print(new_file_name) os.mkdir(new_file_name) #2.获取old文件夹中所有的文件名字 file_names = os.listdir(old_file_name) # print(file_names) #3.使用多进程的方式copy原文件夹中的所有文件到新文件夹中 p = Pool(5) p.apply_async(xxx) if __name__ == "__main__": main()
1)初始化版
from multiprocessing import Pool import os def copyFileTask(): "完成copy一个文件的功能" fr = open() fw = open() content = fr.read() fw.write(content) fw.close() fr.close() def main(): #0.获取要copy的文件夹的名字 old_file_name = input("请输入你要copy的文件夹:") #1.创建一个文件夹 new_file_name = old_file_name + "-附件" #print(new_file_name) os.mkdir(new_file_name) #2.获取old文件夹中所有的文件名字 file_names = os.listdir(old_file_name) # print(file_names) #3.使用多进程的方式copy原文件夹中的所有文件到新文件夹中 p = Pool(5) p.apply_async(copyFileTask) if __name__ == "__main__": main()
2)查看知识点
In [14]: from multiprocessing import Pool In [15]: p = Pool(5) In [16]: p.a p.apply p.apply_async In [18]: help(p.apply_async)
Help on method apply_async in module multiprocessing.pool: apply_async(func, args=(), kwds={}, callback=None, error_callback=None) method of multiprocessing.pool.Pool instance Asynchronous version of `apply()` method. (END)
3)版本2:打开关闭对应的文件名
from multiprocessing import Pool import os def copyFileTask(name,old_file_name,new_file_name): "完成copy一个文件的功能" fr = open(old_file_name + "/" + name) fw = open(new_file_name + "/" + name) content = fr.read() fw.write(content) fw.close() fr.close() def main(): #0.获取要copy的文件夹的名字 old_file_name = input("请输入你要copy的文件夹:") #1.创建一个文件夹 new_file_name = old_file_name + "-附件" #print(new_file_name) os.mkdir(new_file_name) #2.获取old文件夹中所有的文件名字 file_names = os.listdir(old_file_name) # print(file_names) #3.使用多进程的方式copy原文件夹中的所有文件到新文件夹中 p = Pool(5) for name in file_names: p.apply_async(copyFileTask,args=(name,old_file_name,new_file_name)) if __name__ == "__main__": main()
4)2窗口测试
5)调试程序,添加print
4 def copyFileTask(name,old_file_name,new_file_name): 5 "完成copy一个文件的功能" 6 print(name) 7 fr = open(old_file_name + "/" + name, "r") 8 fw = open(new_file_name + "/" + name, "w") 9 10 content = fr.read() 11 fw.write(content) 12 13 fw.close() 14 fr.close() 15 print("------") 16
python@ubuntu:~/python06/04-多进程copy文件$ python3 copyFile.py 请输入你要copy的文件夹:test 17-进程池.py ------ 12-multiprocessing.py 10-多个Fork.py ------ 04-吃包子.py ------ 07-谁先退出.py ------ 01-多任务.py ------ 15-Process创建的子进程和父进程的关系.py 20-Queue.py ------ ------
6)调试成功
from multiprocessing import Pool import os def copyFileTask(name,old_file_name,new_file_name): "完成copy一个文件的功能" print(name) fr = open(old_file_name + "/" + name, "r") fw = open(new_file_name + "/" + name, "w") content = fr.read() fw.write(content) fw.close() fr.close() print("------") def main(): #0.获取要copy的文件夹的名字 old_file_name = input("请输入你要copy的文件夹:") #1.创建一个文件夹 new_file_name = old_file_name + "-附件" #print(new_file_name) os.mkdir(new_file_name) #2.获取old文件夹中所有的文件名字 file_names = os.listdir(old_file_name) # print(file_names) #3.使用多进程的方式copy原文件夹中的所有文件到新文件夹中 p = Pool(5) for name in file_names: p.apply_async(copyFileTask,args=(name,old_file_name,new_file_name)) p.close() p.join() #主进程要等待子进程 if __name__ == "__main__": main()
├── copyFile.py ├── test │ ├── 01-多任务.py │ ├── 02-fork.py │ ├── 03-fork2.py │ ├── 04-吃包子.py │ ├── 05-fork的返回值.py │ ├── 06-getppid.py │ ├── 07-谁先退出.py │ ├── 08-全局变量.py └── test-附件 ├── 01-多任务.py ├── 02-fork.py ├── 03-fork2.py ├── 04-吃包子.py ├── 05-fork的返回值.py ├── 06-getppid.py ├── 07-谁先退出.py ├── 08-全局变量.py
python@ubuntu:~/python06/04-多进程copy文件$ python3 copyFile.py 请输入你要copy的文件夹:test copy的进度是:100.00% 已完成copy...
from multiprocessing import Pool,Manager import os import time def copyFileTask(name,old_file_name,new_file_name,queue): "完成copy一个文件的功能" # print(name) fr = open(old_file_name + "/" + name, "r") fw = open(new_file_name + "/" + name, "w") content = fr.read() fw.write(content) fw.close() fr.close() # time.sleep(1) #让进度条显示更加明显 queue.put(name) #print("------") def main(): #0.获取要copy的文件夹的名字 old_file_name = input("请输入你要copy的文件夹:") #1.创建一个文件夹 new_file_name = old_file_name + "-附件" #print(new_file_name) os.mkdir(new_file_name) #2.获取old文件夹中所有的文件名字 file_names = os.listdir(old_file_name) # print(file_names) #3.使用多进程的方式copy原文件夹中的所有文件到新文件夹中 p = Pool(5) queue = Manager().Queue() for name in file_names: p.apply_async(copyFileTask,args=(name,old_file_name,new_file_name,queue)) num = 0 allNum = len(file_names) while True: queue.get() num += 1 copyRate = num/allNum print("\rcopy的进度是:%.2f%%"%(copyRate*100),end="") if num == allNum: break print("\n已完成copy...") # p.close() # p.join() #主进程要等待子进程 if __name__ == "__main__": main()
from multiprocessing import Pool,Manager import os import time def copyFileTask(name,old_file_name,new_file_name,queue): "完成copy一个文件的功能" # print(name) fr = open(old_file_name + "/" + name, "r") fw = open(new_file_name + "/" + name, "w") content = fr.read() fw.write(content) fw.close() fr.close() #time.sleep(1) #让进度条显示更加明显 queue.put(name) #print("------") def main(): #0.获取要copy的文件夹的名字 old_file_name = input("请输入你要copy的文件夹:") #1.创建一个文件夹 new_file_name = old_file_name + "-附件" #print(new_file_name) try: os.mkdir(new_file_name) except Exception as e: print("该文件附件已经存在,即将覆盖") #2.获取old文件夹中所有的文件名字 file_names = os.listdir(old_file_name) # print(file_names) #3.使用多进程的方式copy原文件夹中的所有文件到新文件夹中 p = Pool(5) queue = Manager().Queue() for name in file_names: p.apply_async(copyFileTask,args=(name,old_file_name,new_file_name,queue)) num = 0 allNum = len(file_names) while True: queue.get() num += 1 copyRate = num/allNum print("\rcopy的进度是:%.2f%%"%(copyRate*100),end="") if num == allNum: break print("\n已完成copy...") # p.close() # p.join() #主进程要等待子进程 if __name__ == "__main__": main()
标签:close llb 优化 src put 全局变量 mkdir 附件 成功
原文地址:http://www.cnblogs.com/venicid/p/7965646.html