170 похожих чатов

Есть массив с функциями. Я в цикле вызываю их все,

и записываю результат выполнения во второй массив.
Как в несколько потоков запустить выполнение функций? Подскажите, что гуглить.

12 ответов

25 просмотров

Если функции выполняют CPU операции, то нет никакого смысла запускать их в разных потоках из-за GIL. Если функции выполняют IO-bound операции, то лучше смотреть в сторону асинхронного кода, он менее затратен, чем многопоточный.

Вы также можете попробовать запускать ваши функции в разных процессах. Тогда они будут выполняться параллельно. Но, процессы просто так вот легко не могут обмениваться данными. Придётся разбираться с тем, как собирать результаты. Ну, и это очень затратно. И зависит от количества ядер.

В Python имеются стандартные модули для работы с процессами, потоками и асинхронностью. multiprocessing (https://docs.python.org/3/library/multiprocessing.html), subprocess (https://docs.python.org/3/library/subprocess.html), threading (https://docs.python.org/3/library/threading.html), asyncio (https://docs.python.org/3/library/asyncio.html).

Игорь- Автор вопроса
Елена Максимова
Вы также можете попробовать запускать ваши функции...

В функциях умножение матриц небольших, на переданные им данные. Данные одни и те же для всех функций. Результат каждой функции не зависит от работы других функций. В каком порядке они выполняются, тоже не важно.

Игорь
В функциях умножение матриц небольших, на переданн...

Это CPU опреации. Нет никакого смысла запускать в нескольких потоках. Сумаррное время выполнения будет такое же, как и при последовательном выполнении, а то и больше (за счёт затрат на создание потоков). На счёт процессов смотрите сами. Не думаю, что это даст существенную выгоду.

Игорь- Автор вопроса
Елена Максимова
Это CPU опреации. Нет никакого смысла запускать в ...

Сейчас они по очереди запускаются. На 1000 шт. уходит 2.5 секунды. Хотелось бы быстрее секунды получить.

Игорь
Сейчас они по очереди запускаются. На 1000 шт. ухо...

Боюсь, не выйдет. Не тот язык программирования)

Игорь- Автор вопроса

Tensorflow, я не совсем в курсе, что там внутри, вроде на C основные операции выполняются.

Игорь
Tensorflow, я не совсем в курсе, что там внутри, в...

Ну тут тогда надо смотреть уже конкретно. В базе своей питон не умеет в многопоточность с CPU операциями. Но некоторые библиотеки, написанные на Си, могут что-то такое в некоторых случаях. На этом я со своими советами всё 😔

Игорь
Tensorflow, я не совсем в курсе, что там внутри, в...

Стоп стоп так если тензорфлов - тебе никаких мультипотоков не надо воротить

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта