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

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

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

12 ответов

13 просмотров

Если функции выполняют 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, я не совсем в курсе, что там внутри, в...

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

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

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

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно 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
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта