我需要使用Google Shortener API缩短多个网址。由于每个缩短过程不相互依赖,我决定在Python中使用多处理库。
raw_data是一个包含我的长网址的数据框。 Api_Key是一个包含来自多个Google帐户的api密钥的列表(因为我不想达到api使用限制一天)
这是底层代码。
import pandas as pd
import time
from multiprocessing import Pool
import math
import requests
raw_data["Shortened"] = "xx"
Api_Key_List1 = ['Key1',
'Key2',
'Key3']
raw_data = raw_data[0:3]
LongUrl = raw_data['SMS Click traker'].tolist()
args = [[LongUrl[index], Api_Key_List1[index]] for index,value in enumerate(LongUrl)]
print("xxxx")
def goo_shorten_url(url,key):
post_url = 'https://www.googleapis.com/urlshortener/v1/url?key=%s'%key
payload = {'longUrl': url}
headers = {'content-type': 'application/json'}
time.sleep(2)
r = requests.post(post_url, data=json.dumps(payload), headers=headers)
return(json.loads(r.text)["id"])
def helper(args):
return goo_shorten_url(*args)
if __name__ == '__main__':
p = Pool(processes = 3)
data = p.map(helper,args)
print("main")
raw_data["Shortened"]=data
p.close()
print(raw_data)
使用此代码,我可以一次成功缩短多个网址,从而节省了大量时间。以下是一些我难以找到答案的问题:
我是python编程的新手,请耐心等待。这将有助于我更好地理解多处理的内部工作。