Python中有没有一种方法可以创建一个for循环,而不必等到内部代码完成后再进行迭代?

2024-09-30 22:26:43 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个for循环,里面有time.sleep函数

import time

list = [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)

Tags: 函数代码inimport列表fortime顺序
3条回答

可以使用嵌套for循环:

for _ in range(10):     # how many times do these 3 function calls happen?
    for idx in range(3):
        FunctionThatDoesSomethingTimeRelated(idx)
    time.sleep(3)

这就是你想做的吗

import time

list = [1, 2, 3]

for i in list:
    FunctionThatDoesSomethingTimeRelated(i)

time.sleep(3)

for i in list:    
    FunctionThatDoesSomethingTimeRelated(i) 

请在提问时更加清楚,您目前使用相同的函数名来描述(大概)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作为变量名也是不正确的,因为它是built-in class

根据评论编辑:

您可以尝试使用类似的方法,每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次

相关问题 更多 >