You can do this with OhMyThreads.jl
You’d just write
using OhMyThreads
memory_per_item = estimate_memory(chunk[1])
@tasks for i in eachindex(chunk)
@set ntasks = floor(Int, system_memory / (memory_per_item * safe_inflation_factor))
memory_intensive_computation(chunk[i])
end
or
using OhMyThreads
memory_per_item = estimate_memory(chunk[1])
ntasks = floor(Int, system_memory / (memory_per_item * safe_inflation_factor))
tforeach(eachindex(chunk); ntasks) do i
memory_intensive_computation(chunk[i])
end