日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

異步函數,也稱為協程,是在執行過程中可以暫停和恢復的函數。在 Python 中,asyncio 模塊提供了一個強大的框架,用于使用協程編寫并發代碼,協程是可以暫停和恢復的特殊函數。在本文中,我們將探討如何在 Python 中使用 asyncio 永久運行兩個異步函數。

異步函數

異步函數,也稱為協程,是可以在執行過程中暫停和恢復的函數。它們允許并發執行代碼而不阻塞主線程,從而實現系統資源的高效利用。

要在 Python 中定義異步函數,我們在 def 語句之前使用 async 關鍵字。在異步函數中,我們可以使用await關鍵字暫停執行并等待另一個異步函數或協程完成。

方法1-使用asyncio模塊

Python 中的 asyncio 模塊提供了一個框架,用于使用協程編寫單線程并發代碼、通過套接字和其他資源復用 I/O 訪問、運行網絡客戶端和服務器以及其他相關操作。它允許我們以結構化和有組織的方式編寫異步代碼。

語法

Here, the asyncio.get_event_loop() function is used to retrieve the current event loop or create a new one if none exists.

登錄后復制

示例

在下面的 function1 示例中,我們有一個無限循環,它打印“Function 1”,然后使用await asyncio.sleep(1) 暫停 1 秒。同樣,function2 有一個無限循環,打印“Function 2”并暫停 2 秒。通過在主函數中調用 asyncio.gather(function1(), function2()),我們指示事件循環同時執行這兩個函數。 asyncio.gather 函數負責以交錯的方式調度和運行這兩個函數。當我們運行 Python 腳本時,事件循環無限期地運行,重復執行 function1 和 function2。輸出演示了這種行為,來自兩個函數的消息根據各自的時間間隔以交錯方式打印。

import asyncio

async def function1():
    while True:
        print("Function 1")
        await asyncio.sleep(1)  # Pause execution for 1 second

async def function2():
    while True:
        print("Function 2")
        await asyncio.sleep(2)  # Pause execution for 2 seconds

async def main():
    await asyncio.gather(function1(), function2())

if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    try:
        loop.run_until_complete(main())
    finally:
        loop.close()

登錄后復制

輸出

Function 1
Function 2
Function 1
Function 2
Function 1
Function 1
Function 2
Function 1
Function 1
.
.
.

登錄后復制

方法1-使用線程

線程是輕量級的,允許在單個進程中并發執行多個任務。在這個方法中,我們將利用線程模塊來永遠運行兩個異步函數。

語法

thread1 = threading.Thread(target=async_function1)

登錄后復制

示例

在下面的示例中,我們有兩個異步函數:async_function1 和 async_function2。

    async_function1 使用 time.sleep(1) 每秒打印“異步函數 1”。

    async_function2 使用 time.sleep(2) 每兩秒打印一次“Async function 2”。

    我們創建兩個線程,thread1 和 thread2,分別針對 async_function1 和 async_function2。線程模塊中的 Thread 類用于創建和管理線程。然后我們使用 start() 方法啟動兩個線程。這會在單獨的線程中啟動異步函數的執行,從而允許它們同時運行。

    import threading
    import time
    
    def async_function1():
        while True:
            print("Async function 1")
            time.sleep(1)
    
    def async_function2():
        while True:
            print("Async function 2")
            time.sleep(2)
    
    thread1 = threading.Thread(target=async_function1)
    thread2 = threading.Thread(target=async_function2)
    
    thread1.start()
    thread2.start()
    
    while True:
        pass
    

    登錄后復制

    輸出

    此示例的輸出將連續每秒打印“Async function 1”,每兩秒打印“Async function 2”。該代碼啟動兩個線程,每個線程執行其各自的異步函數。主線程通過無限循環保持活動狀態,以允許其他線程無限期地運行。

    Async function 1
    Async function 1
    Async function 2
    Async function 1
    Async function 1
    Async function 2
    Async function 1
    Async function 1
    Async function 2
    

    登錄后復制登錄后復制

    方法 3 – 使用子流程

    子進程是可以在 Python 程序中創建和管理的獨立進程。在這個方法中,我們將使用 subprocess 模塊來永遠運行兩個異步函數。

    語法

    subprocess.Popen(args, bufsize=-1, executable=None)
    

    登錄后復制

    這里,

      args(必需):該參數指定要執行的命令。它可以是一個字符串或字符串序列。

      bufsize:此參數表示用于 I/O 操作的緩沖區大小。默認值為-1,表示使用系統默認緩沖區大小。

      bufsize:此參數表示用于 I/O 操作的緩沖區大小。默認值為-1,表示使用系統默認緩沖區大小。

      示例

      在此示例中,我們有兩個相同的異步函數:async_function1 和 async_function2。

        async_function1 使用 time.sleep(1) 每秒打印“異步函數 1”。

        async_function2 使用 time.sleep(2) 每兩秒打印一次“Async function 2”。

        我們使用 subprocess 模塊中的 subprocess.Popen 類創建子進程,而不是線程。每個子進程都是通過執行運行相應異步函數的單獨 Python 進程來創建的。子進程是使用 subprocess.Popen 構造函數創建的,我們傳遞 Python 命令來執行所需的函數。例如,[‘python’, ‘-c’, ‘from module import async_function1; async_function1()’] 從單獨的 Python 進程運行 async_function1。

        import subprocess
        import time
        
        def async_function1():
            while True:
                print("Async function 1")
                time.sleep(1)
        
        def async_function2():
            while True:
                print("Async function 2")
                time.sleep(2)
        
        subprocess1 = subprocess.Popen(['python', '-c', 'from module import async_function1; async_function1()'])
        subprocess2 = subprocess.Popen(['python', '-c', 'from module import async_function2; async_function2()'])
        
        while True:
            pass
        

        登錄后復制

        輸出

        此示例的輸出將連續每秒打印“Async function 1”,每兩秒打印“Async function 2”。該代碼創建兩個子進程,每個子進程執行其各自的異步函數。主進程通過無限循環保持活動狀態,以允許子進程無限期地運行。

        Async function 1
        Async function 1
        Async function 2
        Async function 1
        Async function 1
        Async function 2
        Async function 1
        Async function 1
        Async function 2
        

        登錄后復制登錄后復制

        結論

        在本文中,我們討論了如何使用 Python 中的 asyncio 模塊在 Python 中永久運行兩個異步函數。使用 asyncio 進行異步編程為編寫高性能和響應式 Python 應用程序開辟了新的可能性。通過利用異步函數和事件循環,您可以利用并發的力量并有效地管理多個任務。

        以上就是如何在Python中永遠運行兩個異步函數的詳細內容,更多請關注www.xfxf.net其它相關文章!

分享到:
標簽:Python 異步函數 運行
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定