我正在使用Reddit api投票一些subreddit。我想同时使用praw库与reddit api交互来同时投票多个subreddit。

我想赞一下/ r / bookclub的27个“热门”和“崛起”职位:

subreddit = reddit.subreddit("bookclub")

for submission in subreddit.hot(limit=27):
    submission.upvote()

for submission in subreddit.rising(limit=27):
    submission.upvote()


我想使用异步或多处理来更快地做到这一点。我使用grequests库一次完成所有.upvote(),到目前为止,它仍在工作,但是我不确定它是否真的更好:

subreddit = reddit.subreddit("bookclub")

hot_upvotes = (grequests.get(submission.upvote()) for submission in subreddit.hot(limit=27))
grequests.map(hot_upvotes)

rising_upvotes = (grequests.get(submission.upvote()) for submission in subreddit.rising(limit=27))
grequests.map(rising_upvotes)


两种版本都支持subreddit。我想知道的是,是否可以同时运行hot_upvotesrising_upvotes部分?

最佳答案

from threading import Thread
import functools

subreddit = reddit.subreddit("bookclub")

def run_hot_upvotes(subreddit):
    hot_upvotes = (grequests.get(submission.upvote()) for submission in subreddit.hot(limit=27))
    grequests.map(hot_upvotes)

def run_rising_upvotes(subreddit):
    rising_upvotes = (grequests.get(submission.upvote()) for submission in subreddit.rising(limit=27))
    grequests.map(rising_upvotes)

Thread(target = functools.partial(run_rising_upvotes, subreddit)).start()
Thread(target = functools.partial(run_hot_upvotes, subreddit)).start()


尝试执行以下操作,以使它们同时在各自的线程中运行。

09-10 07:54
查看更多