python 프로 세 스 풀 에서 실 현 된 다 중 프로 세 스 폴 더 copy 기 전체 예제

이 인 스 턴 스 는 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 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기