python多線程執行類中的靜態方法

來源:互聯網
上載者:User

標籤:使用   函數   get   函數對象   ace   同步   def   pat   實現   

在python 中如果通過多線程的方式執行某個方法很簡單,只需要把同步函數的第一個參數為該函數對象即可。但是如果函數對象是某個類的靜態方法,這時候如果直接使用類的該函數對象會報錯。此時需要構造一個代理的方法來實現。

如:上一個博文中的統計目錄大小的靜態類方法,如果想要查詢多目錄的空間大小,並且做成多線程個的方式。可採用下面的方法:

def dir_size_proxy(cls_instance, i):    return cls_instance.get_dir_size(i)class DiskSpaceUtil(object):    @staticmethod    def get_dir_list_size(dir_path_list):        import multiprocessing        pool = multiprocessing.Pool(processes=8)        result_list = []        for dir_path in dir_path_list:            result_list.append(pool.apply_async(dir_size_proxy, (DiskSpaceUtil, dir_path)))        pool.close()        pool.join()        size_list = [result.get() for result in result_list]        return size_list

同步方法 DiskSpaceUtil 類中的 get_dir_size 方法。

代理函數: dir_size_proxy

 

python多線程執行類中的靜態方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.