Parallel map

This commit is contained in:
Connor Rigby 2017-12-21 22:42:52 -08:00
parent 9020204675
commit 394a70f3f3

View file

@ -20,7 +20,7 @@ defmodule Farmbot.FarmEvent.Manager do
alias Farmbot.FarmEvent.Execution
alias Farmbot.Repo.FarmEvent
# @checkup_time 100
# @checkup_time 5000
@checkup_time 30_000
def register_events(event_list) do
@ -81,11 +81,20 @@ defmodule Farmbot.FarmEvent.Manager do
{:noreply, %{state | timer: timer, checkup: nil}}
end
defp pmap(collection, func) do
collection
|> Enum.map(&(Task.async(fn -> func.(&1) end)))
|> Enum.map(&Task.await/1)
end
def async_checkup(manager, state) do
now = get_now()
alias Farmbot.Repo.FarmEvent
maybe_farm_event_log "Rebuilding calendar."
all_events = state.events |> Enum.map(&FarmEvent.build_calendar(&1))
# all_events = state.events |> Enum.map(&FarmEvent.build_calendar(&1))
all_events = state.events |> pmap(&FarmEvent.build_calendar(&1))
# |> Enum.map(&(Task.async(FarmEvent.build_calendar(&1))))
# |> Enum.map(&Task.await/1)
maybe_farm_event_log "Rebuilding calendar complete."
# do checkup is the bulk of the work.