Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Charts F#实时绘制平行图_Charts_Parallel Processing_F#_Deedle - Fatal编程技术网

Charts F#实时绘制平行图

Charts F#实时绘制平行图,charts,parallel-processing,f#,deedle,Charts,Parallel Processing,F#,Deedle,我正在学习使用F#Live Charting,很难让代码并行 我有这段代码,是在一些谷歌搜索的例子的帮助下编写的 module liveChartData = let SampledData (tuple) (t:int) = let name = tuple |> fst let stat = tuple |> snd let x = [for i in all.GetColumn<float>((name,st

我正在学习使用F#Live Charting,很难让代码并行

我有这段代码,是在一些谷歌搜索的例子的帮助下编写的

module liveChartData =
    let SampledData (tuple) (t:int) =
        let name = tuple |> fst 
        let stat = tuple |> snd
        let x = [for i in all.GetColumn<float>((name,stat)).Keys -> i.ToShortDateString()]
        let y = all.GetColumn<float>((name,stat)) |> Series.fillMissingWith 0. |> Series.values
        let obs =
            seq { for i in (Seq.zip x y) do
                    do Thread.Sleep t
                    yield (i) } |> Seq.cache |> Seq.observe
        "" + name + "-" + stat + "",obs

let dataSort (id:string) =
    let name = all.ColumnKeys |> Seq.map fst |> Seq.distinct |> Seq.toList
    let stat = all.ColumnKeys |> Seq.map snd |> Seq.distinct |> Seq.toList
    [|for i in name do for j in stat -> (i,j)|]
    |> Array.filter (fun i -> (i |> snd) = id)

let prepData (stats:string) =
    [|for i in (dataSort stats) -> i|]
    |> Array.map (fun i ->  let data = liveChartData.SampledData i 200
                            LiveChart.FastLineIncremental(data |> snd,data |> fst))
    |> Chart.Combine

let charting_s=
    [|for i in ["col1"; "col2";"col3";"col4"; "col5"] -> i|]
        |> Array.map (fun i -> prepData i)
        |> Chart.Rows
也得到

System.InvalidOperationException: Collection was modified; enumeration operation may not execute.
试图使其他部分平行,我也得到了其他错误。 在并行地将数据馈送到LiveChart.FastLineIncremental时,似乎出现了问题。 我还认为代码可以从某种异步过程中受益,但我不知道如何合并它

任何帮助都将不胜感激


这段代码可以正常工作,但我只想使用我的所有内核。

尝试将Array.Parallel.map向上移动一级,以便并行创建数据,然后在同一线程上创建图表线

大概是这样的:

let prepData (stats:string) =
    [|for i in (dataSort stats) -> i|]
    |> Array.Parallel.map (fun i -> liveChartData.SampleData i 200)
    |> Array.map (fun data ->  LiveChart.FastLineIncremental(data |> snd, data |> fst))

我已经这样做了,但这并没有将数据绑定到图表上。当我按照你的建议运行它时,我仍然没有使用所有的内核。问题似乎在于将数据绑定并行化到图表。
let prepData (stats:string) =
    [|for i in (dataSort stats) -> i|]
    |> Array.Parallel.map (fun i -> liveChartData.SampleData i 200)
    |> Array.map (fun data ->  LiveChart.FastLineIncremental(data |> snd, data |> fst))