提高getfollowers函数的速度-Instagram API-通过LevPasha

问题描述 投票:0回答:1
from InstagramAPI import InstagramAPI
import time
def getTotalFollowers(user_id):
   followers = []
   next_max_id = True
   while next_max_id:
      if next_max_id is True:
         next_max_id = ''
      _ = api.getUserFollowers(user_id, maxid=next_max_id)
      followers.extend(api.LastJson.get('users', []))
      next_max_id = api.LastJson.get('next_max_id', '')
   return followers


if __name__ == "__main__":
   #please enter your instagram username and password
   api = InstagramAPI("username","password")
   api.login()
   user_id = 6839180758
   start_time=time.time()
   followers = api.getTotalFollowers(user_id)
   print('Number of followers:', len(followers))
   print("Follower details are : "+str(followers))
   print("\n\nTotal time required : "+str(float(time.time())-float(start_time)))

当我尝试执行此代码时,我总共得到了274个关注者的处理时间约为3秒

任何人都可以将multiprocessing应用于它,以便可以快速执行此代码。大约274位关注者需要1秒

通过使用任何这些-

  • 多处理
  • 异步模块
  • PoolExecuter

我只希望代码能够快速执行,您可以使用它执行任何操作。

Ps。我是python新手

web-scraping python-requests python-multiprocessing instagram-api concurrent.futures
1个回答
0
投票
import threading
import numpy as np
di=dict()
def getTotalFollowers(*user_ids):
    for user_id in user_ids:
       followers = []
       next_max_id = True
        while next_max_id:
          if next_max_id is True:
            next_max_id = ''
            _ = api.getUserFollowers(user_id, maxid=next_max_id)
            followers.extend(api.LastJson.get('users', []))
            next_max_id = api.LastJson.get('next_max_id', '')
        di[user_id]=followers


threads =[]
user_id=[user_id1,user_id2,...]
chunks = [i.tolist() for i in np.array_split(links, 10) if i.size>0] #10 threads
for lst in chunks:
    threads.append(threading.Thread(target=getTotalFollowers, args=(lst)))

for x in threads:
   x.start()
for x in threads:
    x.join()
print(di)

这将创建10个线程,您可以在创建chunks时控制这些线程>

© www.soinside.com 2019 - 2024. All rights reserved.