2017-05-17 10 views
1

Reddit APIを使用していくつかのサブディレクトリをupvoteしています。私は、prawライブラリを使ってreddit apiと対話するために、複数のサブディレクトリを同時にupvoteしたいと思います。Pythonで一度に複数のバッチを同時に実行できますか?

は、私は/ R/bookclubの27「ホット」と「上昇」の記事をupvoteしたい:

subreddit = reddit.subreddit("bookclub") 

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

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

私はこれより速く行うには、非同期またはマルチプロセッシングを使用したいと思います。私は一度にすべての.upvote()を行うためにgrequestsライブラリを使用し、そしてそれは、これまで働いて、私はそれが本当に良いでしょうかはわからない:

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 upvote両方のバージョンが。 hot_upvotesrising_upvotes部分を同時に実行することが可能であるかどうか疑問に思っていますか?

答えて

1
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() 

両方を同時に実行するには、それぞれを独自のスレッドで実行してください。

+0

実行時に 'run_hot_upvotes()'と 'run_rising_upvotes()'関数に引数を渡す方法はありますか? 'run_hot_upvotes(subreddit) 'のように –

+0

' NameError:global name'サブラインが '定義されていません'というメッセージが表示されます。それを各関数に渡す方法を理解する必要があります。 –

+0

'args'を追加しました。 (args =(subreddit、))start() ' –

関連する問題