Size: a a a

2020 August 29

B

Bogdan in pro.elixir
Эту задачу решить
источник

SK

Suren Kirakosyan in pro.elixir
Tharin
Или мини видео курс Alchemist Camp
на звук не воспринимаю
источник

B

Bogdan in pro.elixir
Более простым способом
источник

T

Tharin in pro.elixir
А что делает get_temperature/2 ?
источник

T

Tharin in pro.elixir
Как и откуда что оно берёт?
источник

B

Bogdan in pro.elixir
Suren Kirakosyan
в очереди.
Тоже рекомендую
источник

T

Tharin in pro.elixir
Suren Kirakosyan
+ код который работал одинаково

cities = List.duplicate "London", 100

cities
|> Enum.map(
                       fn city -> {:ok, pid} =   Metex.Worker.start_link

                       Metex.Worker.get_temperature(pid, city)
    end)

И следующий пример

{:ok, pid} = Metex.Worker.start_link

cities
|> Enum.map(fn city -> Metex.Worker.get_temperature(pid, city) end)
Ну тут разницы вообще никакой. Вы же мапом проходите и ждёте, что вернёт результат итеративной функции. Тут можно не плодить по воркеру на каждое действие.
источник

SK

Suren Kirakosyan in pro.elixir
Tharin
Если ты для каждого города по генсерверу заведешь, то они свои сообщения будут обрабатывать независимо друг от друга. Параллельно.
Огромное спасибо, вот я именно это хотел выяснить!
источник

SK

Suren Kirakosyan in pro.elixir
Bogdan
Ещё можно через Task.async_stream
пока не добрался до этого.
источник

AD

Anastasiya Dyachenko in pro.elixir
Suren Kirakosyan
ну смотри, я читаю книгу Benjamin The Little Elixir OTP Guidebook и там он объясняет работу процессов. Объясняя работу процессов он создают лист с именами 5 городов и ассинхронно запрашивает температуру в этих городах с использованием процессов. Потом переходит к объяснению GenServer-а, но не выполняет ассинхронный запрос температуры городов. Я решил сам поиграться с этим, так как в книге нету примера с использованием GenServer-а. В итоге я мог как для каждого города запустить свой GenServer.start_link, так и запустить один GenServer.start_link для всех городов. Результат был одинаков и поэтому я не понял как правильно делать в этом случа: для каждого свой генсервер или один генсервер для всех?
я когда-то придумывала тестовое задание на использование GenServer, может будет интересно сделать https://gist.github.com/Apelsinka223/a9e4fadfb47e325e0e8196fb9d79715a
источник

T

Tharin in pro.elixir
Suren Kirakosyan
Огромное спасибо, вот я именно это хотел выяснить!
Но это не в твоём коде. Ты не асинхронно выполняешь)
источник

SK

Suren Kirakosyan in pro.elixir
Большое спасибо.
источник

B

Bogdan in pro.elixir
Suren Kirakosyan
пока не добрался до этого.
Попробуй она берет Enumerable как параметр и запускает каждый элемент в отдельном процессе.
источник

T

Tharin in pro.elixir
Ты создаёшь сервер для каждого города и просишь температуру. Это не асинхронно выполняется.
источник

B

Bogdan in pro.elixir
Bogdan
Попробуй она берет Enumerable как параметр и запускает каждый элемент в отдельном процессе.
Я думаю это проще чем актора писать в данном случае. Генсервер хорош там где нужен стейт
источник

B

Bogdan in pro.elixir
Тут вроде он не очень нужен, если я правильно вник
источник

SK

Suren Kirakosyan in pro.elixir
Bogdan
Попробуй она берет Enumerable как параметр и запускает каждый элемент в отдельном процессе.
ок.
источник

SK

Suren Kirakosyan in pro.elixir
Bogdan
Я думаю это проще чем актора писать в данном случае. Генсервер хорош там где нужен стейт
да это намного проще.
источник

B

Bogdan in pro.elixir
источник

SK

Suren Kirakosyan in pro.elixir
Tharin
Ты создаёшь сервер для каждого города и просишь температуру. Это не асинхронно выполняется.
так, сам генсервер не имеет прямое отношение к ассинхронности, для ассинхронности нужно задействовать процессы?
источник