Как перебирать N файлов одновременно, чтобы посчитать вхождение уникального слова - PullRequest
0 голосов
/ 08 марта 2019

Это мой код для подсчета вхождения всех уникальных слов в файл:

package main

import (
    "bufio"
    "fmt"
    "log"
    "os"
)

func main(){
    file, err := os.Open("file1.txt")
    if err != nil {
        log.Fatal(err)
    }
    words := make(map[string]int)
    /*asking scanner to split into words*/
    scanner := bufio.NewScanner(file)
    scanner.Split(bufio.ScanWords)
    count := 0
    //scan the inpurt
    for scanner.Scan() {
        //get input token - in our case a word and update it's frequence
        words[scanner.Text()]++
        count++
    }
    if err := scanner.Err(); err != nil {
        fmt.Fprintln(os.Stderr, "reading input:", err)
    }
    for k, v := range words {
        fmt.Printf("%s:%d\n", k, v)
    }
}

Мне нужно выполнить итерацию этой карты по N файлам одновременно, чтобы вычислить вхождение всех уникальных слов.

1 Ответ

0 голосов
/ 08 марта 2019

Вы можете использовать errgroup.Group , чтобы сделать его параллельным.

Не забывайте правильно обрабатывать одновременные записи на карту, если вы делаете ее доступной для всех процедур.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...