Desidero che il ciclo sia parallelo utilizzando le routine di go. Ho provato a usare i canali ma non ha funzionato. Il mio problema principale è che voglio aspettare che tutte le iterazioni siano terminate prima di continuare. Ecco perché scrivere semplicemente go
prima che non funzioni. Ho cercato di utilizzare i canali (penso che il modo sbagliato), ma che ha reso il mio codice ancora più lentoParallel For-Loop
func createPopulation(populationSize int, individualSize int) []Individual {
population := make([]Individual, populationSize)
//i want this loop to be work parallel
for i := 0; i < len(population); i++ {
population[i] = createIndividual(individualSize)
}
return population
}
func createIndividual(size int) Individual {
var individual = Individual{make([]bool, size), 0}
for i := 0; i < len(individual.gene); i++ {
if rand.Intn(2)%2 == 1 {
individual.gene[i] = true
} else {
individual.gene[i] = false
}
}
return individual
}
mio struct è simile al seguente:
type Individual struct {
gene []bool
fitness int
}
hai impostato i GOMAXPROCS variabile ENV quando si cerca le diverse versioni fuori? – fabrizioM