Aktywne Wpisy

PodniebnyMurzyn +600
Ja to już sam nie wiem czy tu trzeba się śmiać, płakać, czy wzywać psychiatrę.
źródło: image_picker_C6C22AFF-BF6E-47BD-AFD8-1C9A00D8687B-91647-00000C021022A56A
Pobierz
nightmeen +150
Budowa zamku w Stobnicy rozpoczęła się w 2015 r. i od początku wzbudzała kontrowersje, głównie ze względu na jego lokalizację. Zamek liczy ponad 70 m wysokości i około 200 m długości. Budowla ma 15 kondygnacji, a wysokość każdej z nich równa jest dwóm standardowym piętrom w typowym budownictwie mieszkalnym. Jego waga wynosi około 0,5 mln ton, a w samym zamku znajduje się aż 200 klatek schodowych.
Zamek położony jest na obrzeżach Puszczy
Zamek położony jest na obrzeżach Puszczy
źródło: DSC_0376
Pobierz




Mam sobie obrazek i chcę na każdym pikselu wykonać jakąś operację. Mogę to zrobić np. tak:
for pixel in image.pixels_mut() {// zrób coś z pikselem
}
Albo, równoważnie:
image.pixels_mut().for_each(|pixel| {// zrób coś z pikselem
});
Akurat tak się złożyło, że każdy piksel mogę przetworzyć niezależnie od innych. Chciałbym wobec tego wykorzystać pełnię możliwości mojego wielordzeniowego procesora, puścić to na kilku wątkach i przetwarzać piksele równolegle. Jak to mogę zrobić?
Z pomocą przychodzi
rayon- crate implementujący dużo ułatwień do zrównoleglania przetwarzania danych. W moim przypadku wystarczy zrobić tyle:use rayon::prelude::*;image.pixels_mut().par_bridge().for_each(|pixel| {
// zrób coś z pikselem
});
To wszystko! Piksele będą teraz wrzucane do puli wątków i przetwarzane na tyle równolegle, na ile się da. Użycie procesora przy wykonywaniu - 100% ( ͡° ͜ʖ ͡°)
#programowanie
A w Ruście masz ( ͡° ͜ʖ ͡°) Jak spróbujesz coś takiego odstawić, to kod się
zliczanie to pewnie na interlocked
fajnie ten rust wygląda