溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用Python2.7怎么在多進程中開發(fā)多線程

發(fā)布時間:2021-05-07 16:34:51 來源:億速云 閱讀:355 作者:Leah 欄目:開發(fā)技術

這篇文章給大家介紹使用Python2.7怎么在多進程中開發(fā)多線程,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

python有哪些常用庫

python常用的庫:1.requesuts;2.scrapy;3.pillow;4.twisted;5.numpy;6.matplotlib;7.pygama;8.ipyhton等。

可以使得程序執(zhí)行效率至少提升10倍

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
 @Time : 2018/10/24
 @Author : LiuXueWen
 @Site : 
 @File : transfer.py
 @Software: PyCharm
 @Description: 
"""

import os
import traceback
import threading
from multiprocessing import Pool
from multiprocessing.dummy import Pool as ThreadPool


# 兼容python2.7上多線程的bug,不加上下面的反代理程序不能正常執(zhí)行
def proxy(cls_instance, i):
 return cls_instance.multiprocess_thread(i)
def proxy2(cls_instance, i):
 return cls_instance.file_operation(i)

class file2transfer():
 # 多進程執(zhí)行程序
 def multiprocessingTransferFiles(self):
  try:
   # 創(chuàng)建進程池
   p = Pool()
   //參數(shù)末尾必須加上逗號
   p.apply_async(proxy, args=(self, self.root_path,))
   p.close()
   p.join()
  except Exception as e:
   print(e)

 # 每個進程下的多線程執(zhí)行,線程數(shù)等于當前機器的核數(shù)
 def multiprocess_thread(self, root_path):
  try:
   # 創(chuàng)建線程鎖
   lock = threading.RLock()
   lock.acquire()
   # 獲取每個文件
   for pfile in os.listdir(root_path):
    # 獲取文件的完整路徑
    full_file_path = os.path.join(root_path, pfile)
    # 多線程讀寫文件
    p = ThreadPool()
    # 執(zhí)行線程
    p.apply_async(proxy2, args=(self, full_file_path,))
    p.close()
    p.join()
  except Exception as e:
   print(e)
  finally:
   # 釋放線程鎖
   lock.release()

 # 對每個文件夾下的每個文件進行操作
 def file_operation(self, full_file_path):
  try:
   // TODO 真正需要單獨執(zhí)行的操作
   pass
  except Exception as e:
   print(e)

關于使用Python2.7怎么在多進程中開發(fā)多線程就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI