У меня есть следующий код для проверки статуса ссылок. Если статус ссылки в порядке, то соответствующий ему Status
будет обновлен на 1
и напечатан ok
. Я запускаю этот код в Google Colab здесь .
import pandas as pd
from multiprocessing import Pool
import requests
session = requests.Session()
headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0'}
# Define a dictionary containing links
data = {'Link': ['https://www.collinsdictionary.com/dictionary/french-english/aimer',
'https://www.collinsdictionary.com/dictionary/english-french/graduate',
'https://www.collinsdictionary.com/dictionary/english-french/apple',
'https://www.collinsdictionary.com/dictionary/english-french/apricot'],
'Status': [0, 0, 0, 0]}
# Generate datafrane df
df = pd.DataFrame(data, columns = ['Link', 'Status'])
#Generate function to check status of a link
def check_status(i):
r = session.get(df.at[i, 'Link'], headers = headers)
if r.status_code == 200:
df.at[i, 'Status'] = 1
return 'ok'
else:
return 'not ok'
pool = Pool(5)
result = pool.map_async(check_status, list(df[df['Status'] == 0].index)[0:4])
pool.close()
print(result.get())
print(df)
Результат от Colab:
['ok', 'ok', 'ok', 'ok']
Link Status
0 https://www.collinsdictionary.com/dictionary/f... 0
1 https://www.collinsdictionary.com/dictionary/e... 0
2 https://www.collinsdictionary.com/dictionary/e... 0
3 https://www.collinsdictionary.com/dictionary/e... 0
Не могли бы вы объяснить, почему Colab запускает этот код в нескольких секунд, а мой ноутбук работает вечно?