J'utilise l'api Reddit pour augmenter certains subreddits. J'aimerais augmenter plusieurs sous-subreds simultanément, en utilisant la bibliothèque praw
pour interagir avec l'api reddit.Comment puis-je exécuter des lots de requêtes simultanément en python?
Je veux upvote les 27 « chauds » et les messages « hausse » de/r/bookclub:
subreddit = reddit.subreddit("bookclub")
for submission in subreddit.hot(limit=27):
submission.upvote()
for submission in subreddit.rising(limit=27):
submission.upvote()
Je voudrais utiliser ou async multitraitement pour le faire plus rapidement. J'ai utilisé la bibliothèque grequests
pour faire tout le .upvote()
à la fois, et cela fonctionne jusqu'à présent, mais je ne suis pas sûr que ce soit vraiment mieux:
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)
Les deux versions Upvote subreddit. Ce que je me demande est s'il est possible d'exécuter les portions hot_upvotes
et rising_upvotes
en même temps?
Existe-t-il un moyen de passer un argument aux fonctions 'run_hot_upvotes()' et 'run_rising_upvotes()' quand elles sont exécutées? Comme 'run_hot_upvotes (subreddit)' –
j'obtiens un 'NameError: nom global 'subreddit' n'est pas défini'. Besoin de comprendre comment le transmettre à chaque fonction. –
J'ai ajouté un 'args' et cela a fonctionné. Thread (target = run_hot_upvotes, args = (subreddit,)). Start() ' –