欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python之線程池map()方法傳遞多參數(shù)list

 更新時間:2023年03月14日 11:22:20   作者:不能知道我是誰  
這篇文章主要介紹了python之線程池map()方法傳遞多參數(shù)list問題,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

線程池map()方法傳遞多參數(shù)list

之前通過threading.thread()進行了助力接口的多線程并發(fā),但是這個針對并發(fā)數(shù)量較少的時候比較好用,如果并發(fā)數(shù)量多,除了線程包協(xié)程這種處理方式的情況下,我們還可以采用線程池的方法。

線程池的實現(xiàn)通俗講就是把所有的任務(wù)放在了消息隊列里,開啟多個線程后執(zhí)行線程,但線程執(zhí)行結(jié)束后不會中斷線程任務(wù),會從消息隊列內(nèi)繼續(xù)獲取線程任務(wù)進行線程執(zhí)行,這樣線程池就比多線程操作節(jié)省了很多創(chuàng)建線程與關(guān)閉線程的步驟,節(jié)約大部分資源與時間。

線程池并發(fā)需要引入模塊

import concurrent.futures

ThreadPoolExecutor 內(nèi)有兩種線程池方法 map()與submit()今天先說map()方法

他的語法為

 with concurrent.futures.ThreadPoolExecutor() as pool:
      res = pool.map(craw, uid_list)
      print(res)
  • map()內(nèi)craw為方法名,這里方法命不帶()
  • uid_list為方法參數(shù),map()方法內(nèi)需要傳遞list數(shù)據(jù)類型

先看一下整體代碼

5000用戶并發(fā)助力

    def test_case_09(self):
        """5000用戶并發(fā)助力"""
        # 通過yaml配置文件封裝方法 獲取uid_list
        uid_list = YamlHandler(YamlThePath().number_new).get_uid_list()
        # add_ticket獲取5000賬號登陸狀態(tài)
        with concurrent.futures.ThreadPoolExecutor() as pool:
            pool.map(AccountAccess().add_ticket, uid_list)
        # 5000賬號線程池方法助力用戶
        with concurrent.futures.ThreadPoolExecutor() as pool:
            pool.map(PreheatMethod().help, [(uid, self.A, 1) for uid in uid_list])
        # 獲取用戶被助力次數(shù)
        response = PreheatMethod().init(self.A)
        print(f"當(dāng)前用戶被助力次數(shù) :{response['data']['userInfo']['helpedCount']}次")

再來看一下兩個接口的方法更好的感知一下

首先是獲取登陸狀態(tài)add_ticket

    def add_ticket(self, uid):
        """
        獲取單獨用戶t票
        :param uid: 單獨用戶uid
        :return:
        """
        self.data['url'] = ApiAddress().get_ticket
        self.data['host'] = ApiAddress().host
        self.params['uid'] = str(uid)
        self.params['type'] = 0
        self.data['params'] = json.dumps(self.params)
        res = r().post(url=ApiAddress().ticket, data=self.data)
        print(f'獲取t票結(jié)果:{uid}{res}')
        return uid

很簡單的一個接口請求 入?yún)⒅挥幸粋€uid,但是注意一下這里的uid不是list,他只是一個參數(shù)。

那么有的同學(xué)就會有疑問,map()內(nèi)傳遞的方法參數(shù)是一個uid內(nèi)容的list。

map()方法就是把你需要的參數(shù)存在list內(nèi),通過遍歷的方式去請求你指定的接口。

這時候可能有的人又會問,因為我當(dāng)時也是這么問自己的,如果一個方法內(nèi)有多個參數(shù),其中這些參數(shù)有的甚至都不是固定的內(nèi)容怎么辦。

咱們看一下另一個請求助力接口的方法

    def help(self, agrs):
        """
        助力用戶
        :param agrs: uid:當(dāng)前用戶uid to_uid:助力用戶uid count:助力次數(shù)
        :return:
        """
        uid, to_uid, count = agrs
        self.attrs['toUid'] = str(to_uid)
        self.attrs['count'] = count
        response = r().response(uid, self.code, "help", **self.attrs)
        logger.info(f'help response uid:{uid} to_uid:{to_uid}\n{response}')
        return response

沒錯,我們通過元組的方式傳遞到助力接口內(nèi),通過元組內(nèi)的關(guān)鍵字位置分別給指定的元素賦值。

再線程池的代碼內(nèi),我們通過列表推導(dǎo)式把uid_list內(nèi)的參數(shù)便利到你指定好的元組內(nèi),當(dāng)然這里如果是多個參數(shù),也可以用字典,把字典便利key與value當(dāng)作變化的參數(shù),因為列表推導(dǎo)式給你返回的是list,所以我們把需要的參數(shù)放在元組內(nèi),元組放在列表內(nèi),這樣就可以對多參數(shù)的方法使用map()線程池進行并發(fā)了。

with concurrent.futures.ThreadPoolExecutor() as pool:
            pool.map(PreheatMethod().help, [(uid, self.A, 1) for uid in uid_list])
[(uid, self.A, 1) for uid in uid_list]

列表推導(dǎo)式獲取后大概就是下方的list數(shù)據(jù)內(nèi)容格式

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python中numpy?常用操作總結(jié)

    python中numpy?常用操作總結(jié)

    這篇文章主要介紹了python中numpy常用操作總結(jié),NumPy是Python語言的一個擴充程序庫,支持大量高維度數(shù)組與矩陣運算,此外也針對數(shù)組運算提供大量的數(shù)學(xué)函數(shù)庫
    2022-09-09
  • OpenCV 圖像梯度的實現(xiàn)方法

    OpenCV 圖像梯度的實現(xiàn)方法

    梯度簡單來說就是求導(dǎo)。本文主要介紹了OpenCV 圖像梯度的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • keras 獲取某層輸出 獲取復(fù)用層的多次輸出實例

    keras 獲取某層輸出 獲取復(fù)用層的多次輸出實例

    這篇文章主要介紹了keras 獲取某層輸出 獲取復(fù)用層的多次輸出實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • python解決字典中的值是列表問題的方法

    python解決字典中的值是列表問題的方法

    這篇文章主要介紹了字典中的值是列表問題,先用value連成一個str,最后用str.split()作一個轉(zhuǎn)換,生成一個列表.看了python cookbook,上面正好有一個recipe講到如何處理這樣的問題
    2013-03-03
  • Python進行Socket接口測試的實現(xiàn)

    Python進行Socket接口測試的實現(xiàn)

    Python 提供了強大且易于使用的 socket 模塊,使開發(fā)者能夠輕松地創(chuàng)建客戶端和服務(wù)器應(yīng)用,實現(xiàn)數(shù)據(jù)傳輸和交互,本文主要介紹了Python進行Socket接口測試的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-06-06
  • python 從遠(yuǎn)程服務(wù)器下載日志文件的程序

    python 從遠(yuǎn)程服務(wù)器下載日志文件的程序

    本文提供了一種方法,該程序可實現(xiàn)抓取服務(wù)器的日志文件到本地,根據(jù)該程序可自行擴展對日志文件的自動化分析。常用于數(shù)據(jù)挖掘、生產(chǎn)維護等
    2013-02-02
  • 詳解如何利用Python進行客戶分群分析

    詳解如何利用Python進行客戶分群分析

    每個電子商務(wù)數(shù)據(jù)分析師必須掌握的一項數(shù)據(jù)聚類技能,如果你是一名在電子商務(wù)公司工作的數(shù)據(jù)分析師,從客戶數(shù)據(jù)中挖掘潛在價值,來提高客戶留存率很可能就是你的工作任務(wù)之一。這篇就來告訴你如何將客戶分成不同的群組,并在一段時間內(nèi)觀察每個群組的留存率
    2023-02-02
  • TensorFlow Autodiff自動微分詳解

    TensorFlow Autodiff自動微分詳解

    這篇文章主要介紹了TensorFlow Autodiff自動微分詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Anaconda+vscode+pytorch環(huán)境搭建過程詳解

    Anaconda+vscode+pytorch環(huán)境搭建過程詳解

    這篇文章主要介紹了Anaconda+vscode+pytorch環(huán)境搭建過程詳解,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • python?unicodedata模塊用法

    python?unicodedata模塊用法

    這篇文章主要為大家介紹了python?unicodedata模塊用法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06

最新評論