最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

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

import concurrent.futures

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

他的語(yǔ)法為

 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ā)助力"""
        # 通過(guò)yaml配置文件封裝方法 獲取uid_list
        uid_list = YamlHandler(YamlThePath().number_new).get_uid_list()
        # add_ticket獲取5000賬號(hào)登陸狀態(tài)
        with concurrent.futures.ThreadPoolExecutor() as pool:
            pool.map(AccountAccess().add_ticket, uid_list)
        # 5000賬號(hào)線程池方法助力用戶
        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']}次")

再來(lái)看一下兩個(gè)接口的方法更好的感知一下

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

    def add_ticket(self, uid):
        """
        獲取單獨(dú)用戶t票
        :param uid: 單獨(dú)用戶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

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

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

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

這時(shí)候可能有的人又會(huì)問(wèn),因?yàn)槲耶?dāng)時(shí)也是這么問(wèn)自己的,如果一個(gè)方法內(nèi)有多個(gè)參數(shù),其中這些參數(shù)有的甚至都不是固定的內(nèi)容怎么辦。

咱們看一下另一個(gè)請(qǐng)求助力接口的方法

    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

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

再線程池的代碼內(nèi),我們通過(guò)列表推導(dǎo)式把uid_list內(nèi)的參數(shù)便利到你指定好的元組內(nèi),當(dāng)然這里如果是多個(gè)參數(shù),也可以用字典,把字典便利key與value當(dāng)作變化的參數(shù),因?yàn)榱斜硗茖?dǎo)式給你返回的是list,所以我們把需要的參數(shù)放在元組內(nèi),元組放在列表內(nèi),這樣就可以對(duì)多參數(shù)的方法使用map()線程池進(jìn)行并發(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é)

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

相關(guān)文章

  • python操作yaml的方法詳解

    python操作yaml的方法詳解

    這篇文章主要為大家介紹了python操作yaml的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01
  • python實(shí)現(xiàn)隨機(jī)梯度下降(SGD)

    python實(shí)現(xiàn)隨機(jī)梯度下降(SGD)

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)隨機(jī)梯度下降SGD,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Python通過(guò)m3u8文件下載合并ts視頻的操作

    Python通過(guò)m3u8文件下載合并ts視頻的操作

    這篇文章主要介紹了Python通過(guò)m3u8文件下載合并ts視頻的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • python之no module named xxxx以及虛擬環(huán)境配置過(guò)程

    python之no module named xxxx以及虛擬環(huán)境配置過(guò)程

    在Python開(kāi)發(fā)過(guò)程中,經(jīng)常會(huì)遇到環(huán)境配置和包管理的問(wèn)題,主要原因包括未安裝所需包或使用虛擬環(huán)境導(dǎo)致的,通過(guò)pip install命令安裝缺失的包是解決問(wèn)題的一種方式,此外,使用虛擬環(huán)境,例如PyCharm支持的Virtualenv,可以為每個(gè)項(xiàng)目創(chuàng)建獨(dú)立的運(yùn)行環(huán)境
    2024-10-10
  • Python使用jpype模塊調(diào)用jar包過(guò)程解析

    Python使用jpype模塊調(diào)用jar包過(guò)程解析

    這篇文章主要介紹了Python使用jpype模塊調(diào)用jar包過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • python爬蟲(chóng)之爬取筆趣閣小說(shuō)升級(jí)版

    python爬蟲(chóng)之爬取筆趣閣小說(shuō)升級(jí)版

    筆趣有很多起點(diǎn)中文網(wǎng)的小說(shuō),該網(wǎng)站小說(shuō)的更新速度稍滯后于起點(diǎn)中文網(wǎng)正版小說(shuō)的更新速度。并且該網(wǎng)站只支持在線瀏覽,不支持小說(shuō)打包下載。所以可以通過(guò)python爬取文本信息保存,從而達(dá)到下載的目的
    2021-09-09
  • 深入理解Django自定義信號(hào)(signals)

    深入理解Django自定義信號(hào)(signals)

    這篇文章主要介紹了深入理解Django自定義信號(hào)(signals),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • 基于python實(shí)現(xiàn)鼠標(biāo)實(shí)時(shí)坐標(biāo)監(jiān)測(cè)

    基于python實(shí)現(xiàn)鼠標(biāo)實(shí)時(shí)坐標(biāo)監(jiān)測(cè)

    這篇文章主要給大家介紹了如何基于python實(shí)現(xiàn)鼠標(biāo)實(shí)時(shí)坐標(biāo)監(jiān)測(cè),文章通過(guò)代碼示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-11-11
  • python開(kāi)發(fā)中module模塊用法實(shí)例分析

    python開(kāi)發(fā)中module模塊用法實(shí)例分析

    這篇文章主要介紹了python開(kāi)發(fā)中module模塊用法,以實(shí)例形式較為詳細(xì)的分析了Python中模塊的功能、定義及相關(guān)使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-11-11
  • 淺談Python 命令行參數(shù)argparse寫(xiě)入圖片路徑操作

    淺談Python 命令行參數(shù)argparse寫(xiě)入圖片路徑操作

    這篇文章主要介紹了淺談Python 命令行參數(shù)argparse寫(xiě)入圖片路徑操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07

最新評(píng)論

乌拉特后旗| 故城县| 阜宁县| 长岭县| 罗平县| 龙海市| 平度市| 梁河县| 靖安县| 繁峙县| 云和县| 百色市| 昌黎县| 孟州市| 东方市| 文安县| 莱阳市| 林芝县| 河东区| 吉安市| 昌图县| 时尚| 通化县| 瓦房店市| 定州市| 嘉鱼县| 铁岭县| 海伦市| 苗栗市| 呼伦贝尔市| 西城区| 福清市| 玉门市| 石屏县| 修文县| 潼关县| 抚宁县| 弥渡县| 龙川县| 察雅县| 于田县|