python多线程执行类中的静态方法
生活随笔
收集整理的這篇文章主要介紹了
python多线程执行类中的静态方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在python 中如果通過多線程的方式執行某個方法很簡單,只需要把同步函數的第一個參數為該函數對象即可。但是如果函數對象是某個類的靜態方法,這時候如果直接使用類的該函數對象會報錯。此時需要構造一個代理的方法來實現。
如:上一個博文中的統計目錄大小的靜態類方法,如果想要查詢多目錄的空間大小,并且做成多線程個的方式。可采用下面的方法:
def dir_size_proxy(cls_instance, i):return cls_instance.get_dir_size(i)class DiskSpaceUtil(object):@staticmethoddef get_dir_list_size(dir_path_list):import multiprocessingpool = 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
?
轉載于:https://www.cnblogs.com/dasheng-maritime/p/8365409.html
總結
以上是生活随笔為你收集整理的python多线程执行类中的静态方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 二手空调多少钱啊?
- 下一篇: MyBatis中#{}和${}的区别