Setting number of threads and parsing arguments

It doesn’t necessarily require a parametric type - you can provide runtime dispatch with something like

...
process_var1(var1::Array{Float64, 2}) = ...
process_var1(var1::Float64) = ...
...

function read(files, vars)
   dfs = [DataFrame(CSV.File(file)) for file in files]
   ...
   result1 = process_var1(vars[1])
   ...
end