Я не уверен, какую правильную терминологию использовать. Но мой пример должен прояснить ситуацию.
Я хочу прослушать поток комментариев Reddit .
Этот поток получает комментарий в режиме реального времени, когда он публикуется в reddit (/ r / askReddit и / r / worldNews), поэтому мне не нужно опрашивать сервер.
Однако эта функция блокирует , мне нужно поместить ее в несколько потоков .
Вот что у меня есть:
#! usr/bin/python3
from multiprocessing.dummy import Pool
import praw
def process_item(self, stream):
# Display the comment
for comment in stream:
print(comment.permalink)
def get_streams(reddit):
# Listen for comments from these two subReddits:
streams = [
reddit.subreddit('AskReddit').stream.comments(skip_existing=True),
reddit.subreddit('worldnews').stream.comments(skip_existing=True)
]
pool = Pool(4)
print('waiting for comments...')
results = pool.map(self.process_item, streams)
# But I want to do tons of other things down here or in `main()`.
# The code will never reach down here because it's always listening for comments.
Единственный обходной путь, который я вижу, - это поместить всю логику моей программы в process_item()
, но это кажется действительно глупым.
Мне кажется, я хочу, чтобы process_item
продолжал добавлять комментарии в список, в фоновом режиме , и тогда я смогу обработать эти комментарии так, как считаю нужным. Но мне не нужно застревать в process_item()
Поскольку программа выполняет другие действия, список ставится в очередь с заданиями, которые необходимо выполнить, в то время как программа выполняет другие действия.
возможно? Если да, не могли бы вы дать мне несколько советов относительно схемы?
Я новичок в потоке.