Python - Почему aws lambda запускает несколько потоков так медленно? - PullRequest
0 голосов
/ 20 марта 2020

Я использую AWS Lambda для запуска python кода

def get_likers(link):
    #scrapes a site

def lambda_handler(event, context):


    text = #gets link from a telegram bot message

    checkt = threading.Thread(target=get_likers, args=[text])
    checkt1 = threading.Thread(target=get_likers, args=["here's a link"])
    checkt2 = threading.Thread(target=get_likers, args=["here's a link"])
    checkt3 = threading.Thread(target=get_likers, args=["here's a link"])
    checkt4 = threading.Thread(target=get_likers, args=["here's a link"])


    checks = []
    checks.append(checkt)
    checks.append(checkt1)
    checks.append(checkt2)
    checks.append(checkt3)
    checks.append(checkt4)


    for thread in checks:
        thread.start()



    for thread in checks:
        thread.join()


return {'statusCode': 200}

Он должен запускать потоки одновременно и быстро sh, но если я делаю это только с 1 потоком, то занимает 3 секунды, с 5 потоками это занимает 7 секунд и с 20 потоками 60 + секунд. Почему это происходит? Каждый поток довольно легкий, и данные для очистки одинаковы для каждого потока

1 Ответ

0 голосов
/ 20 марта 2020

CPython потоки связывают задачи ввода-вывода хорошо, но задачи, связанные с ЦП, плохо.

И если вы добавляете один поток, связанный с процессором, к другому потоку, связанному с набором операций ввода-вывода, все они начнутся проблемы.

Я не знаю специфику AWS Lambda, но это может быть то, что вы видите.

Обратите внимание, что Python, язык, темы в порядке. Это реализации типа CPython и Pypy, которые не очень хорошо работают. Jython and Iron Python хорошо резьба.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...