【问题标题】:PRAW get_redditor() slow?PRAW get_redditor() 慢?
【发布时间】:2015-01-15 21:40:35
【问题描述】:

有没有人注意到 praw 的 get_redditor() 方法有点慢? 我昨天开始使用它,当我开始注意到速度下降时 我决定做一点测试。我使用以下代码:

import praw
import time

time1 = 0
time2 = 0

print('Initial reddit setup')
time1 = int(round(time.time() * 1000))
user_agent = ('Reddit Checker 0.1 by /u/NinjaXI')
r = praw.Reddit(user_agent)
time2 = int(round(time.time() * 1000))
print(time1)
print(time2)
print(time2 - time1)
print('===================================================================')

print('Get Subreddit Python')
time1 = int(round(time.time() * 1000))
pythonSub = r.get_subreddit('Python')
time2 = int(round(time.time() * 1000))
print(time1)
print(time2)
print(time2 - time1)
print('===================================================================')

print('Get hot 10')
time1 = int(round(time.time() * 1000))
pythonSub.get_hot(limit=10)
time2 = int(round(time.time() * 1000))
print(time1)
print(time2)
print(time2 - time1)
print('===================================================================')

print('Get Redditor NinjaXI')
time1 = int(round(time.time() * 1000))
me = r.get_redditor('NinjaXI')
time2 = int(round(time.time() * 1000))
print(time1)
print(time2)
print(time2 - time1)
print('===================================================================')

print('Get submitted 10')
time1 = int(round(time.time() * 1000))
me.get_submitted(limit=10)
time2 = int(round(time.time() * 1000))
print(time1)
print(time2)
print(time2 - time1)
print('===================================================================')

这个输出:

Initial reddit setup
1421319134782
1421319134783
1
===================================================================
Get Subreddit Python
1421319134783
1421319134783
0
===================================================================
Get hot 10
1421319134783
1421319134783
0
===================================================================
Get Redditor NinjaXI
1421319134783
1421319137402
2619
===================================================================
Get submitted 10
1421319137402
1421319137402
0
===================================================================

如您所见,使用 get_redditor() 比 get_subreddit() 需要(在此运行中)多 2.6 秒。平均每次时间在 2 到 2.6 秒之间,但 get_subreddit() 仅高达 1 毫秒。我在做什么吗?这是 praw/reddit api 的已知问题吗?有什么办法可以加快速度吗?

【问题讨论】:

  • 我认为其他功能return lazy objects.
  • 非常感谢,只需调用 get_redditor('username', fetch=False) 即可。请张贴作为答案。很奇怪,我需要为一个而不是另一个指定。看看我能不能把它报告给某个地方的开发者

标签: python performance reddit praw


【解决方案1】:

PRAW 的 getter 通常为 return lazy objects,这意味着它们仅在您实际尝试使用该对象时从 Reddit 的服务器请求数据。这与您非常快速的函数调用一致——一切都在本地发生。您的get_redditor() 电话可能正在立即请求数据(尽管我无法说出原因;根据文档,它也应该是惰性的)。

【讨论】:

  • get_redditor() 方法还可以加载惰性对象,它只需要出于任何原因将 fetch=False 作为参数传递。
猜你喜欢
  • 2020-12-24
  • 1970-01-01
  • 2020-12-09
  • 2021-09-03
  • 2014-09-25
  • 1970-01-01
  • 2023-04-03
  • 2018-12-20
  • 2017-07-20
相关资源
最近更新 更多