for循环迭代之间的延迟(Python)

12

在Python中是否可以像这样做?我用Python编写了一个很棒的循环/脚本,并且如果可能的话,我想将此延迟添加到其中。

map(firefox.open, ['http://www.bing.com/search?q=' + str(i) for i in range(x))], [2] * x)

我应该把 sleep(6) 放在哪里呢?
3个回答

25
你可以使用time.sleep(some_seconds)来实现。
from time import sleep

for i in range(10):
    print i
    sleep(0.5)    #in seconds

实现

以下是一个很酷的小实现: (将它粘贴到.py文件中并运行)

from time import sleep

for i in range(101):
    print '\r'+str(i)+'% completed',
    time.sleep(0.1)

使用map函数,打开火狐浏览器并访问以下链接:http://www.bing.com/search?q=' + str(i),其中i的范围是0到x-1,同时将每个网页停留2秒。


map(firefox.open, ['http://www.bing.com/search?q=' + str(i) for i in range(x))], [2] * x) 这段代码中,我应该在哪里加入 sleep(6) 呢? - user3072758
@user3072758,您需要将列表推导式转换为传统的写法。 - sshashank124
3
@user3072758,我知道当你写了一个很棒的列表推导式,然后又不得不像野蛮人一样将其拆开时会有多么失望。 :) - sshashank124
我真的不知道现在该怎么办。我想我可以回到以前多次运行这个程序的方式。我想加入延迟是为了让Firefox能够记录所有查询,而不是“几乎”所有查询。 - user3072758
@user3072758,你能否将你的代码展示出来并写出传统的for循环?如果可以的话,我可以帮助你。我不太了解firefox.open等内容,所以目前还不能理解。 - sshashank124

1

或者,如果您希望它从1开始并模拟秒表:

import time
def count_to(number):
    for i in range(number):
        time.sleep(1)
        i += 1
        if i >= number:
            print('Time is up')
            break
    print(i)

0

是的,在Python中可以做到,您应该使用“time”模块:

     >>> import time
     >>> list1=[1,2,3,4,5,6,7,8,9,10]
     >>> for i in list1:
         time.sleep(1)#sleep for 1 second 
         print i

输出:

  1
  2
  3
  4
  5
  6
  7
  8
  9
  10

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接