Распараллелить тяжелый для l oop дюйм Python - PullRequest
0 голосов
/ 14 июля 2020

Я пишу код для приложения, и у меня есть тяжелый для l oop, который делает несколько запросов GET для получения информации из inte rnet, а затем анализирует эту информацию. Это довольно медленно для последовательного for.

Есть ли способ распараллелить a for l oop в Python? В качестве альтернативы, имеет ли смысл использовать async / await для повышения производительности?

Основная функция.

def index():
    following = current_user.following_list()
    posts = []
    [posts.extend(getPosts(fwd)) for fwd in following]
    posts.sort(key=lambda x: x.timeStamp, reverse=True)
    ....

Функция, в которой происходит большая нагрузка:

def getPosts(account):
    posts = []
    rssFeed = feedparser.parse('{instance}{user}/rss'.format(instance=instance, user=account.username))

    #Gather posts
    if rssFeed.entries != []:
        for post in rssFeed.entries:
            newPost = Post()
            newPost.username = rssFeed.feed.title.split("/")[0].replace(" ", "")
            newPost.date = getTimeDiff(post.published_parsed)
            newPost.timeStamp = datetime.datetime(*post.published_parsed[:6])
            newPost.op = post.author
            newPost.urlToPost = post.link
            newPost.content = Markup(post.description)

            posts.append(newPost)
    return posts
...