【发布时间】:2020-05-24 22:53:18
【问题描述】:
我不知道如何在 python 中使用多线程/多处理来加速这个从 instagram 上的主题标签“猫”中获取所有用户名的抓取过程。
我的目标是尽可能快,因为目前这个过程有点慢
from instaloader import Instaloader
HASHTAG = 'cats'
loader = Instaloader(sleep=False)
users = []
for post in loader.get_hashtag_posts(HASHTAG):
if post.owner_username not in users:
users.append(post.owner_username)
print(post.owner_username)
【问题讨论】:
-
使
users成为set()而不是列表。对于多线程,可能会将帖子列表分成 4 个部分,并分别在 4 个线程中为它们执行循环。最后合并它们中的users集合。 -
@AnmolSinghJaggi 你能告诉我吗?
-
很快就会...
-
好吧,我尝试运行程序并注意到它很慢,因为`loader.get_hashtag_posts(HASHTAG)` 是一个生成器,它以非常慢的速度返回帖子。所以这是 instaloader 库本身的问题,我们对此无能为力。但为了完整起见,我可能会写一个答案来展示当我有更多时间时如何使用多线程。
-
更新:我实际上实现了多线程,它似乎确实以某种方式明显更快。已发布作为答案。万事如意!
标签: python performance optimization web-scraping python-multithreading