鱼C论坛

 找回密码
 立即注册
查看: 1454|回复: 4

新手求助Pytho3并行复制文件问题!

[复制链接]
发表于 2018-4-20 18:05:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 西河沿的风 于 2018-4-20 18:10 编辑

感谢每一位看我问题,回答我问题的小哥哥、小姐姐,谢谢你们!

我想同时从局域网内两个不同的路径复制文件到本地的两个文件夹,单个文件很大,需要很长时间才能复制完成。
所以我就想让两个复制任务同时执行,这样就能节省一半的时间。

主机1端口带宽200M
主机2端口带宽200M
本机端口带宽1000M
局域网带宽1000M

以下是我写的复制文件的程序代码,请问怎么改才能实现并行复制文件的效果呢?谢谢解答!


  1. import os
  2. import shutil
  3. import datetime
  4. import time

  5. now = datetime.datetime.now()
  6. print("现在时间是:",now,"程序启动!")
  7. def main(starth=8,startm=8,stoph=8,stopm=40):
  8.    
  9.     while True:
  10.         now = datetime.datetime.now()
  11.         if now.hour >= starth and now.minute >= startm:
  12.             print("到达程序设定时间,任务开始执行!")
  13.             print("任务启动时间:",now)
  14.             
  15.             shutil.copy(r'\\172.38.9.220\share\share.zip',r'E:\文件暂存\9.220')      #20分钟左右
  16.             shutil.copy(r'\\172.38.10.124\share\share.zip',r'E:\文件暂存\10.124')    #15分钟左右
  17.             
  18.             now = datetime.datetime.now()
  19.             if now.hour == stoph and now.minute == stopm:
  20.                 print("到达设定任务结束时间,任务结束!")

  21.                 break
  22.             
  23.         else:
  24.             time.sleep(20)
  25. main()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-4-20 20:40:30 | 显示全部楼层
多线程,多进程
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-20 21:22:58 From FishC Mobile | 显示全部楼层
IO密集得用多进程
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-20 22:07:48 | 显示全部楼层
yjsx86 发表于 2018-4-20 21:22
IO密集得用多进程

不会多进程,能教教小弟吗?感谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-21 21:39:51 | 显示全部楼层
果然还是求人不如求己。

终于找到了解决的办法。
使用Process创建多进程。
将两个拷贝任务写成两个函数,创建两个进程去并发执行两个函数。

但是我又遇到了新的问题,利用os.unlink删除复制的文件后,再次复制就会出现瞬间复制完成的现象,而复制过来的文件并不是远程主机当前共享的文件,而是已经删除了的文件。



  1. if __name__ == "__main__":
  2.     p1 = Process(target=copy1,args=())
  3.     p2 = Process(target=copy2,args=())

  4.     print('子进程创建成功')

  5.     p1.start()
  6.     p2.start()
  7.     p1.join()
  8.     p2.join()
  9.     print('子进程结束,程序全部结束!')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-12-29 14:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表