2016-11-22 8 views
0

timeモジュールを使用して、5秒以上かかると次の繰り返しにスキップするにはどうすればよいですか?具体的には、How would I stop a while loop after n amount of time?からforループを使用してソリューションを実装する正しい方法は何ですか?forループのタイムモジュールを使用してリスト処理の遅延を防ぐ方法

import requests 
from bs4 import BeautifulSoup 

for n in random_list: 
    url = all_raw_urls[n] 
    try: 
     req = requests.get(url) 
     data = req.text 
     soup = BeautifulSoup(data, 'html.parser') 

     tags = soup.find_all('img') 
     tags = list(set(tags)) 

     if len(tags) < 15 or len(tags) > 50: 
      print(str(image_count) + ': leave' + ' : images: ' + str(len(tags))) 
     else: 
      print(str(image_count) + ': keep' ' : images: ' + str(len(tags))) 
      image_urls.append(url) 
    except: 
     print('request error') 

    image_count += 1 

答えて

1

あなたはtimeouts埋め込まれた要求を使用することができます。タイムアウトパラメータの

req = requests.get(url, timeout=5) 

値は、要求またはタプル(CONNECT_TIMEOUT、READ_TIMEOUT)を待機する秒数です:

req = requests.get(url, timeout=(0.5, 5)) 

あなたが本当に時間モジュールを使いたいのであれば、try/exceptからのすべてを別のスレッドに入れ、whileループはスレッドがfiでなければ5秒後にその状態をチェックすることができます終了し、それを終了し、別のスレッドで次のタスクを実行します。

+0

ありがとう! – McLeodx

関連する問題