日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

qpython3可以调用哪些库_Python3 如何使用asyncio库在调用第三方模块(存在IO等待)的情况下实现协程?...

發布時間:2023/12/9 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qpython3可以调用哪些库_Python3 如何使用asyncio库在调用第三方模块(存在IO等待)的情况下实现协程?... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題描述

demo中有一個 task_check 的模塊,底層是用urllib實現,請問如果要實現使用 asyncio 庫實現協程操作,需要修改這個模塊的底層代碼嗎?如何修改? 往大佬指點

問題出現的環境背景及自己嘗試過哪些方法

平時都是使用 gevent 庫和 monkey.patch_all() 實現協程,但發現 gevent 在調度時使用的是 DummyThread 進行操作,不知是否對性能有影響,如下圖

所以想使用 asyncio 模塊來實現協程, 但 asyncio 沒有類似 monkey.patch_all() 這種模塊來實現底層的替換, 翻閱了各類博文也沒能理解, 望大佬們指點

相關代碼

// 請把代碼文本粘貼到下方(請勿用圖片代替代碼)

demo 代碼如下

import datetime

import asyncio

class DEMO:

def __init__(self):

self.true_count = 0

self.false_count = 0

async def task(self):

from module import task_check

status = task_check.connect("131.114.2.134")["status"]

if status:

self.true_count+=1

else:

self.false_count += 1

print(threading.currentThread().name,datetime.datetime.now(), "task is done, status is", status)

if __name__ == "__main__":

start = datetime.datetime.now()

demo = DEMO()

task_count = 300

# 批量添加asyncio協程

tasks = [asyncio.ensure_future(demo.task()) for _ in range(task_count)]

loop = asyncio.get_event_loop()

loop.run_until_complete(asyncio.wait(tasks))

# 反饋數據

end = datetime.datetime.now()

print("[+] runtime: %s available: %s %%" %(end - start, (demo.true_count / task_count) * 100))

你期待的結果是什么?實際看到的錯誤信息又是什么?

使用 asyncio 庫調用第三方模塊實現協程切換, 而非 aiohttp 這種已實現異步操作的模塊.

總結

以上是生活随笔為你收集整理的qpython3可以调用哪些库_Python3 如何使用asyncio库在调用第三方模块(存在IO等待)的情况下实现协程?...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。