X-Git-Url: http://git.euphorik.ch/?a=blobdiff_plain;f=Parasitemia%2FParasitemia%2FMainAnalysis.fs;h=5ee68865bac7a8f6f92e88081d25f198243aaa31;hb=999a48b8eb25c92e4403c9280fd4fe68f9bc4b7b;hp=043eb739cd6dcaba1805a62f7e43f885f4373685;hpb=3ddaf64dc5ba6a7066a279ad75b9a1ee72194639;p=master-thesis.git diff --git a/Parasitemia/Parasitemia/MainAnalysis.fs b/Parasitemia/Parasitemia/MainAnalysis.fs index 043eb73..5ee6886 100644 --- a/Parasitemia/Parasitemia/MainAnalysis.fs +++ b/Parasitemia/Parasitemia/MainAnalysis.fs @@ -3,6 +3,8 @@ open System open System.Drawing +open FSharp.Collections.ParallelSeq + open Emgu.CV open Emgu.CV.Structure @@ -91,3 +93,13 @@ let doAnalysis (img: Image) (name: string) (config: Config) : Cell li | _ -> () cells + + +let doMultipleAnalysis (imgs: (string * Image) list) (config : Config) : (string * Cell list) list = + let nbConcurrentTaskLimit = 4 + let n = Environment.ProcessorCount + + imgs + |> PSeq.map (fun (id, img) -> id, doAnalysis img id (config.Copy())) + |> PSeq.withDegreeOfParallelism (if n > nbConcurrentTaskLimit then nbConcurrentTaskLimit else n) + |> PSeq.toList \ No newline at end of file