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

在Python同步方法中調用異步方法不阻塞主流程的幾種方案

 更新時間:2025年03月14日 08:21:47   作者:oliver.chau  
這篇文章主要介紹了在Python同步方法中調用異步方法不阻塞主流程的幾種方案,包括使用asyncio.create_task()、threading和concurrent.futures,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

如果你想在 同步方法 中調用 異步方法 save_category_icon,并且不阻塞主線程,可以使用 asyncio.create_task() 或 threading/concurrent.futures 來實現(xiàn)。

方案 1:使用 asyncio.create_task()(推薦)

如果你的代碼 運行在事件循環(huán)中(如 Flask + Quart 或 FastAPI),可以使用:

import asyncio

async def save_category_icon(category_id=0, category_name=None):
    await asyncio.sleep(2)  # 模擬異步任務
    print(f"Icon saved for category {category_id} - {category_name}")

def edit_category():
    loop = asyncio.get_event_loop()
    loop.create_task(save_category_icon(category_id=1, category_name="Test"))
    print("Main process continues...")  # 不會等待異步任務完成

edit_category()

優(yōu)點

  • 不會阻塞主線程
  • 任務會在后臺執(zhí)行
  • 適用于已運行的 asyncio 事件循環(huán)(FastAPI、Quart 等)

方案 2:使用 threading(適用于 Flask 同步環(huán)境)

如果你的代碼在 Flask(同步框架)中運行,推薦用 threading 運行異步方法:

import threading
import asyncio

def run_async_task():
    loop = asyncio.new_event_loop()
    asyncio.set_event_loop(loop)
    loop.run_until_complete(save_category_icon(category_id=1, category_name="Test"))

def edit_category():
    threading.Thread(target=run_async_task, daemon=True).start()
    print("Main process continues...")  # 不會等待異步任務完成

edit_category()

優(yōu)點

  • 不會阻塞 Flask 主進程
  • 在 Flask 等同步環(huán)境下仍可運行異步任務
  • daemon=True 確保進程退出時線程自動關閉

方案 3:使用 concurrent.futures(適用于高并發(fā)情況)

如果你的異步任務是 CPU 密集型 或者需要更好的線程池管理,可以使用 concurrent.futures

import asyncio
from concurrent.futures import ThreadPoolExecutor

executor = ThreadPoolExecutor()

def run_async_task():
    loop = asyncio.new_event_loop()
    asyncio.set_event_loop(loop)
    loop.run_until_complete(save_category_icon(category_id=1, category_name="Test"))

def edit_category():
    executor.submit(run_async_task)  # 提交任務到線程池
    print("Main process continues...")

edit_category()

優(yōu)點

  • 適用于高并發(fā)任務
  • 可以復用 ThreadPoolExecutor,提高性能
  • 不阻塞主進程

選哪個方案?

方案適用場景優(yōu)點
asyncio.create_task()代碼已經(jīng)運行在事件循環(huán)(FastAPI、Quart)輕量級,非阻塞
threading.Thread()Flask 或 Django(同步框架)適用于 Flask,后臺執(zhí)行任務
concurrent.futures.ThreadPoolExecutor高并發(fā)或多個異步任務適用于 CPU 密集型任務

推薦最佳方案

  • FastAPI、Quart: ? 使用 asyncio.create_task()
  • Flask、Django(同步): ? 使用 threading.Thread()
  • 高并發(fā)任務: ? 使用 concurrent.futures.ThreadPoolExecutor

這樣 異步任務會在后臺運行,不會阻塞主流程!

總結

到此這篇關于在Python同步方法中調用異步方法不阻塞主流程的幾種方案的文章就介紹到這了,更多相關Python同步方法調用異步方法內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 對python過濾器和lambda函數(shù)的用法詳解

    對python過濾器和lambda函數(shù)的用法詳解

    今天小編就為大家分享一篇對python過濾器和lambda函數(shù)的用法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • PyTorch使用Torchdyn實現(xiàn)連續(xù)時間神經(jīng)網(wǎng)絡的代碼示例

    PyTorch使用Torchdyn實現(xiàn)連續(xù)時間神經(jīng)網(wǎng)絡的代碼示例

    神經(jīng)常微分方程(Neural ODEs)是深度學習領域的創(chuàng)新性模型架構,它將神經(jīng)網(wǎng)絡的離散變換擴展為連續(xù)時間動力系統(tǒng),本文將基于Torchdyn(一個專門用于連續(xù)深度學習和平衡模型的PyTorch擴展庫)介紹Neural ODE的實現(xiàn)與訓練方法,需要的朋友可以參考下
    2025-02-02
  • 使用Python簡單實現(xiàn)比較PDF文件差異

    使用Python簡單實現(xiàn)比較PDF文件差異

    在處理合同、法律文書或技術文檔時,常常會遇到多個版本的同一 PDF,本文將逐步演示如何配置環(huán)境并使用示例代碼進行比較,還會介紹一些可選的高級設置以滿足不同需求,希望對大家有所幫助
    2026-03-03
  • Python實現(xiàn)的對一個數(shù)進行因式分解操作示例

    Python實現(xiàn)的對一個數(shù)進行因式分解操作示例

    這篇文章主要介紹了Python實現(xiàn)的對一個數(shù)進行因式分解操作,結合實例形式分析了Python因式分解數(shù)值運算相關操作技巧,需要的朋友可以參考下
    2019-06-06
  • 詳解Python中的靜態(tài)方法與類成員方法

    詳解Python中的靜態(tài)方法與類成員方法

    這篇文章主要介紹了關于Python中靜態(tài)方法與類成員的相關資料,文中通過示例代碼給大家詳細總結了兩者在語法和使用上的區(qū)別,有需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-02-02
  • Python streamlit庫快速構建交互式Web應用

    Python streamlit庫快速構建交互式Web應用

    Streamlit 是一個專為數(shù)據(jù)科學家和機器學習工程師設計的Python庫,它可以快速構建交互式Web應用,下面就來詳細的介紹一下streamlit庫的使用,感興趣的可以了解一下
    2025-12-12
  • Python中的字符串操作和編碼Unicode詳解

    Python中的字符串操作和編碼Unicode詳解

    其實字符串也是一種數(shù)據(jù)類型,但是,字符串比較特殊的是還有一個編碼問題。下面這篇文章主要給大家介紹了Python中的字符串操作和編碼Unicode詳解的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • pytorch實現(xiàn)mnist分類的示例講解

    pytorch實現(xiàn)mnist分類的示例講解

    今天小編就為大家分享一篇pytorch實現(xiàn)mnist分類的示例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python實現(xiàn)圖片和base64轉換詳解

    Python實現(xiàn)圖片和base64轉換詳解

    這篇文章主要介紹了Python實現(xiàn)圖片和base64轉換詳解,Base64是一種二進制到文本的編碼方式,如果要更具體一點的話,可以認為它是一種將 byte數(shù)組編碼為字符串的方法,而且編碼出的字符串只包含ASCII基礎字符,需要的朋友可以參考下
    2024-01-01
  • Python身份運算符(is/is not)與雙等號的區(qū)別詳解

    Python身份運算符(is/is not)與雙等號的區(qū)別詳解

    身份運算符(is/is not)與雙等號的區(qū)別是Python編程中的核心知識點之一,掌握這項技能對于提升編程效率和應用效果至關重要,本文通過代碼示例給大家介紹的非常詳細,需要的朋友可以參考下
    2026-05-05

最新評論

汉中市| 渑池县| 永宁县| 台江县| 辰溪县| 赤峰市| 田林县| 临城县| 江山市| 陵水| 应城市| 玉门市| 油尖旺区| 卢氏县| 五常市| 江陵县| 兴文县| 方山县| 远安县| 涞水县| 综艺| 贞丰县| 榆社县| 浪卡子县| 昌平区| 太白县| 汾阳市| 广州市| 迭部县| 蓝田县| 阿拉善盟| 张家口市| 湘西| 平塘县| 乡城县| 汤原县| 怀宁县| 葵青区| 惠东县| 信丰县| 东阿县|