亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Python 中有沒有一種方法可以創建一個 for 循環,該循環不等待內部代碼完成后再進行再次迭

在 Python 中有沒有一種方法可以創建一個 for 循環,該循環不等待內部代碼完成后再進行再次迭

慕尼黑8549860 2023-02-07 14:20:59
假設我有一個 for 循環,里面有一個 time.sleep 函數import timelist = [1, 2, 3]for i in list:    FunctionThatDoesSomethingTimeRelated(i)    time.sleep(3)    FunctionThatDoesSomethingTimeRelated(i)有沒有辦法讓循環同時遍歷列表的每個部分,而不是等待循環內的代碼被執行?基本上執行順序需要是這樣的:FunctionThatDoesSomethingTimeRelated(1)FunctionThatDoesSomethingTimeRelated(2)FunctionThatDoesSomethingTimeRelated(3)time.sleep(3)FunctionThatDoesSomethingTimeRelated(1)FunctionThatDoesSomethingTimeRelated(2)FunctionThatDoesSomethingTimeRelated(3)而不是這個:FunctionThatDoesSomethingTimeRelated(1)time.sleep(3)FunctionThatDoesSomethingTimeRelated(1)FunctionThatDoesSomethingTimeRelated(2)time.sleep(3)FunctionThatDoesSomethingTimeRelated(2)FunctionThatDoesSomethingTimeRelated(3)time.sleep(3)FunctionThatDoesSomethingTimeRelated(3)
查看完整描述

4 回答

?
qq_遁去的一_1

TA貢獻1725條經驗 獲得超8個贊

您可以使用嵌套的 for 循環:


for _ in range(10):     # how many times do these 3 function calls happen?

    for idx in range(3):

        FunctionThatDoesSomethingTimeRelated(idx)

    time.sleep(3)


查看完整回答
反對 回復 2023-02-07
?
慕娘9325324

TA貢獻1783條經驗 獲得超4個贊

請在您的提問中更加清楚,您目前正在使用相同的函數名稱來描述(大概)2個不同的函數。


同樣使用硬編碼計時來等待完成通常不是一個好主意。


您可以只使用 2 個 for 循環來獲得上述結果。


import time


list1 = [1, 2, 3]


for i in list1:

    timeRelFunction1(i)


time.sleep(3)


for i in list1:

    timeRelFunction2(i)

   

同樣list在這里用作變量名也不是正確的方法,因為它是一個內置類。


根據評論編輯:


你可以嘗試使用這樣的東西,每 3 秒檢查一次股票n價格


import time


list1 = [1, 2, 3]


def stockPriceEveryThreeSeconds(number_of_repetitions):

    for i in range(number_of_repetitions):

        for i in list1:

            getStockPrices(i)

        time.sleep(3)


stockPriceEveryThreeSeconds(2)

上面的代碼會每 3 秒檢查一次股票價格,共 2 次。


查看完整回答
反對 回復 2023-02-07
?
紅糖糍粑

TA貢獻1815條經驗 獲得超6個贊

這是你想做的嗎?


import time


list = [1, 2, 3]


for i in list:

    FunctionThatDoesSomethingTimeRelated(i)


time.sleep(3)


for i in list:    

    FunctionThatDoesSomethingTimeRelated(i) 


查看完整回答
反對 回復 2023-02-07
?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

根據我正在閱讀的問題,您正在尋找列表操作的一些并發性。有幾種方法可以解決這個問題,最優化的是迄今為止最復雜的。但一個簡單的入門方法是使用線程模塊。您可以通過這種方式修改以下代碼:


從:


import time


list = [1, 2, 3]


for i in list:

    FunctionThatDoesSomethingTimeRelated(i)

    time.sleep(3)

    FunctionThatDoesSomethingTimeRelated(i)

到:


def functionThatThreads(numberOfLoops):

    import time

    import threading

    list = [1, 2, 3]


    for _ in range(numberOfLoops):

        for i in list:

            threading.Thread(target=FunctionThatDoesSomethingTimeRelated, args=(i,)).start()

        time.sleep(3)


def FunctionThatDoesSomethingTimeRelated(i):

    print(i)


functionThatThreads(2)

輸出:


 python .\testing.py

1

2

3

1

2

3

這將確保執行順序得到維護(先進先出),同時輸出將先完成,先服務。希望我回答了這個問題,或者這有幫助!


查看完整回答
反對 回復 2023-02-07
  • 4 回答
  • 0 關注
  • 203 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號