gpt4 book ai didi

performance - 如何将 filepath.Walkfunc 作为 goroutine 运行

转载 作者:数据小太阳 更新时间:2023-10-29 03:37:10 25 4
gpt4 key购买 nike

我正在尝试解析大型图像数据集。我正在使用 filepath.Walk ] 并处理我在那里找到的每个文件。我想要文件路径。

package main

import (
"fmt"
"image/color"
"image/png"
"math/rand"
"os"
)

var (
Black = color.Gray{0}
)

func getRandFloatNumber(min, max float32) float32 {
return (rand.Float32()*2 - min) * max
}

func openImage(path string, info os.FileInfo, err error) error {
infile, _ := os.Open(path)
defer infile.Close()
img, err := png.Decode(infile)
if err != nil {
return nil
}

array := make([]float32, 128*128)
for y := 0; y < 128; y++ {
for x := 0; x < 128; x++ {
c := color.GrayModel.Convert(img.At(x, y)).(color.Gray)
if c == Black {
array[x*y] = getRandFloatNumber(0.7, 0.95)
} else {
array[x*y] = getRandFloatNumber(0.1, 0.25)
}
}
}

fmt.Println(info.Name())

return nil
}

如何将 openImage 作为 gorutine 运行?或者如何优化这段代码?

最佳答案

您无法获取 filepath.Walk 以在 goroutine 中调用您的函数,但您可以简单地在 WalkFunc 中启动一个 goroutine。

package main

import (
"os"
"path/filepath"
)

func main() {
filepath.Walk("/my/dir", func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}

if info.IsDir() {
return nil
}

// Check more criteria if necessary. Also consider limiting the number
// of concurrent goroutines.

go openImage(path, info)

return nil
})
}

func openImage(path string, info os.FileInfo) {
}

关于performance - 如何将 filepath.Walkfunc 作为 goroutine 运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46504507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com