- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - phát hiện rò rỉ bộ nhớ Ruby/Ruby on Rails
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我希望 for 循环使用 go 例程并行。我尝试使用 channel ,但没有用。我的主要问题是,我想在继续之前等待所有迭代完成。这就是为什么在它不起作用之前简单地编写 đi
的原因。我尝试使用 channel (我认为是错误的方式)但这让我的代码变得更慢
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
} khác {
individual.gene[i] = false
}
}
return individual
}
我的结构看起来像这样:
type Individual struct {
gene []bool
fitness int
}
câu trả lời hay nhất
所以基本上 goroutine 不应该返回一个值,而是将它插入一个 channel 。如果你想等待所有 goroutines 完成,你可以只计算 goroutines 的数量,或者使用 WaitGroup。在这个例子中,这是一个矫枉过正,因为大小是已知的,但无论如何这是一个很好的做法。这是一个修改后的例子:
gói chính
nhập khẩu (
"math/rand"
"đồng bộ"
)
type Individual struct {
gene []bool
fitness int
}
func createPopulation(populationSize int, individualSize int) []Individual {
// we create a slice with a capacity of populationSize but 0 size
// so we'll avoid extra unneeded allocations
population := make([]Individual, 0, populationSize)
// we create a buffered channel so writing to it won't block while we wait for the waitgroup to finish
ch := make(chan Individual, populationSize)
// we create a waitgroup - basically block until N tasks say they are done
wg := sync.WaitGroup{}
for i := 0; i < populationSize; i++ {
//we add 1 to the wait group - each worker will decrease it back
wg.Add(1)
//now we spawn a goroutine
go createIndividual(individualSize, ch, &wg)
}
// now we wait for everyone to finish - again, not a must.
// you can just receive from the channel N times, and use a timeout or something for safety
wg. Chờ()
// we need to close the channel or the following loop will get stuck
đóng(ch)
// we iterate over the closed channel and receive all data from it
for individual := range ch {
population = append(population, individual)
}
return population
}
func createIndividual(size int, ch chan Individual, wg *sync.WaitGroup) {
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
} khác {
individual.gene[i] = false
}
}
// push the population object down the channel
ch <- individual
// let the wait group know we finished
wg.Xong()
}
关于for-loop - 并行 For 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24238820/
Tôi mới làm quen với PHP. Tôi sử dụng các vòng lặp for, while, vòng lặp foreach mọi lúc trong tập lệnh của mình. Tôi muốn biết cái nào hoạt động tốt hơn? Các tiêu chí để lựa chọn một chu kỳ là gì? Chúng ta nên sử dụng cái nào khi lặp trong một vòng lặp khác? Tôi luôn muốn biết
Tôi đang học lớp lập trình ở trường trung học và nhiệm vụ của tôi là tạo ra một máy tính tổng phụ và cấp cao nhất cơ bản, nhưng tôi làm việc trong một nhà hàng nên việc tạo ra một chiếc chỉ cho phép bạn đọc một loại thực phẩm. Vì vậy, tôi đang cố gắng làm cho nó lấy nhiều mặt hàng thực phẩm và thêm chúng vào một biến giá. Xin lỗi nếu một số mã
Đây là cuốn sách tôi đang học. var thành phần = ["trứng", "sữa", "bột mì", "đường", "muối nở", "bột nở",
Tôi đang trích xuất một số từ một chuỗi và chuyển nó vào một hàm. Tôi muốn thêm 1 vào đó và trả về chuỗi trong khi vẫn giữ các số 0 đứng đầu. Tôi có thể thực hiện việc này bằng vòng lặp while, nhưng không thể thực hiện bằng vòng lặp for. Vòng lặp for chỉ bỏ qua số 0. var thêm
EDIT: Tôi đã chỉnh sửa đầu ra của chương trình. Chương trình yêu cầu ước tính một giá trị mu nhất định. Người dùng đưa ra một giá trị mu và cũng cung cấp bốn số khác nhau (được gọi là w, x, y, z) không bằng 1. Sau đó chương trình sẽ cố gắng sử dụng công thức de Jaeger để tìm
Tôi đang viết một thuật toán thực hiện một vòng lặp lớn trên một mảng các số nguyên từ đầu đến cuối, chứa điều kiện if. Vòng lặp có thể kết thúc khi điều kiện sai lần đầu tiên. Vì vậy, đối với vòng lặp for, nếu điều kiện sai, nó sẽ tiếp tục lặp lại và thực hiện các thay đổi biến đơn giản
Bây giờ tôi đã quen với việc lập trình với bộ nhớ rất hạn chế, một câu hỏi mà tôi không có câu trả lời là: Cái nào hiệu quả hơn về bộ nhớ - for(;;) hay while() ? Hay chúng có thể hoán đổi cho nhau như nhau? Cũng bình luận về các vấn đề hiệu quả nếu có!
Câu hỏi này đã có câu trả lời: Làm cách nào để so sánh các chuỗi trong Java? (23 câu trả lời) Đã đóng 8 năm trước. Tôi đang cố gắng tạo một chương trình nhỏ để tôi có thể đọc các từ trong chương trình. Nếu từ đó có 6
Câu hỏi này đã có câu trả lời ở đây: python : lỗi liệt kê chỉ mục ngoài phạm vi trong khi lặp lại các phần tử bật lên (12 câu trả lời) Đóng
Tôi đang cố gắng yêu cầu một số nguyên từ 4 đến 10 từ người dùng. Nếu họ trả lời ngoài phạm vi đó, nó sẽ chuyển sang vòng lặp. Khi người dùng nhập đúng số lần đầu tiên, nó không bị gián đoạn và tiếp tục thực hiện câu lệnh else. Nếu người dùng nhập đúng số vào câu lệnh else, nó sẽ
Tôi đang cố gắng tạo một danh sách có vòng lặp foreach lồng nhau. Vòng lặp đầu tiên lặp qua một số số và vòng lặp thứ hai lặp qua ngày tháng. Tôi muốn viết một số cho một ngày. Vì vậy, có một chức năng khác để kiểm tra nó. Nhưng kết quả là số đó được ghi vào ngày tháng nhiều lần. Ngoài trông như thế này:
Điều tôi muốn làm là sử dụng vòng lặp để tạo một mảng rồi gọi mảng đó trong một lớp khác, điều này không thực hiện được và có thể không bao giờ thực hiện được. Cách tốt nhất để giải quyết vấn đề này là gì? Tôi đã tìm kiếm tất cả các giải pháp nhưng chúng không được biên dịch. Cảm ơn sự giúp đỡ của bạn. nhập khẩu
Tôi đang cố gắng tạo một danh sách có vòng lặp foreach lồng nhau. Vòng lặp đầu tiên lặp qua một số số và vòng lặp thứ hai lặp qua ngày tháng. Tôi muốn viết một số cho một ngày. Vì vậy, có một chức năng khác để kiểm tra nó. Nhưng kết quả là số đó được ghi vào ngày tháng nhiều lần. Ngoài trông như thế này:
Tôi đang mô phỏng một nhà hàng thức ăn nhanh trong hơn ba giờ. Ba giờ được chia thành 18 khoảng thời gian, mỗi khoảng 600 giây. Mỗi khoảng thời gian đưa ra số liệu thống kê về những gì đã xảy ra trong 600 giây. Cấu trúc ban đầu của tôi là như thế này: int i; for (i=0;
Câu hỏi này đã có câu trả lời: IE8 for...in enumerator (3 câu trả lời) Làm cách nào để kiểm tra xem một đối tượng có thuộc tính cụ thể trong J không
Cái nào tốt hơn cho hiệu suất? Điều này có thể không nhất quán với các ngôn ngữ lập trình khác, vì vậy vui lòng giải thích xem chúng có khác nhau không hoặc liệu bạn có thể trả lời câu hỏi của tôi bằng kiến thức về ngôn ngữ cụ thể của mình hay không. Tôi sẽ sử dụng c++ làm ví dụ nhưng tôi muốn biết nó hoạt động như thế nào trong java, c hoặc bất kỳ ngôn ngữ chính thống nào khác
Câu hỏi này khó có thể giúp ích cho bất kỳ khách truy cập nào trong tương lai; nó chỉ liên quan đến một khu vực địa lý nhỏ, một thời điểm cụ thể hoặc một tình huống rất hẹp thường không áp dụng cho khán giả Internet toàn cầu. Để giúp làm cho câu hỏi này được áp dụng rộng rãi hơn, hãy truy cập
Tôi chưa quen với lập trình C và viết mã để xác định hệ số nguyên tố của M trường hợp thử nghiệm. Bản thân chức năng này hoạt động nếu tôi chỉ quét một lần, nhưng thất bại thảm hại khi tôi cố gắng thực hiện M lần. Tôi không biết tại sao vòng lặp scanf() lại xảy ra sự cố. TRONG
Câu hỏi này đã có câu trả lời: JavaScript theo tham chiếu so với theo giá trị [trùng lặp] (4 câu trả lời) Đã đóng 3 năm trước. Tôi gặp sự cố khi sử dụng TSlint và tôi đã tìm ra
Tôi đã thử thêm vòng lặp foreach hoặc for trong mã bên dưới để tạo nhiều tập dữ liệu cho Charts.js. Điều này sẽ cho phép tôi tạo nhiều dòng trên biểu đồ đường này. Tôi có một đối tượng PHP mà tôi có thể mã hóa để điền các biến sau này, nhưng
Tôi là một lập trình viên xuất sắc, rất giỏi!