Academic Research in Educational Sciences Volume 4


Academic Research in Educational Sciences



Yüklə 132,29 Kb.
Pdf görüntüsü
səhifə14/15
tarix07.01.2024
ölçüsü132,29 Kb.
#201223
1   ...   7   8   9   10   11   12   13   14   15
dasturning-siklik-bolimlarini-optimallashtirish (1)

Academic Research in Educational Sciences 
Volume 4 | Issue 5 | 2023 
ISSN: 2181-1385 
ISI: 0,967 | Cite-Factor: 0,89 | SIS: 1,9 | ASI: 1,3 | SJIF: 5,771 | UIF: 6,1 
sa 
 
 
 
 
524
 
May, 2023 
https://t.me/ares_uz Multidisciplinary Scientific Journal 
“chunk_size” „loop_body‟ uzunligini „num_procs‟ ga bo'lish yo'li bilan hisoblanadi. 
Bu har bir jarayon bajariladigan sikl iboralari sonini aniqlaydi. 
Har bir parallel jarayon uchun Process obyektlarini saqlash uchun „procs‟ deb 
nomlangan ro'yxat yaratiladi. 
Keyin, „num_procs‟ jarayonlarini yaratish uchun sikl ishlatiladi. Har bir 
jarayon uchun boshlang'ich va tugatish indekslari „chunk_size‟ asosida aniqlanadi. 
Har bir jarayonning maqsadi argument sifatida „loop_body‟, start va end ni qabul 
qiluvchi „execute_loop_chunk‟ funksiyasiga o'rnatiladi. 
„execute_loop_chunk‟ funksiyasi ichida sikl ko'rsatilgan diapazondagi (boshidan 
oxirigacha - 1) sikl statementlarini takrorlash uchun ishlatiladi. Bu jarayon 
bajariladigan sikl statementlarining bir qismini ifodalaydi. Sharhni parallel ravishda 
bajarilishi kerak bo'lgan haqiqiy sikl logic i bilan almashtirishingiz mumkin. 
Jarayonlar proc.start() yordamida boshlanadi va Process ob'ektlari procs ro'yxatiga 
qo'shiladi. 
Barcha jarayonlarni yaratgandan so'ng, har bir jarayon uchun proc.join() ni 
chaqirish uchun boshqa sikl ishlatiladi. Bu davom etishdan oldin asosiy jarayon 
barcha child processlarning tugashini kutishini ta'minlaydi. 
Loop bayonotlarini bir nechta jarayonlarga taqsimlash va ularni parallel ravishda 
bajarish orqali parallel siklni optimallashtirish siklning umumiy bajarilish vaqtini 
yaxshilashga qaratilgan. 
import multiprocessing 
def parallel_loop_optimization(loop_body, num_procs): 
chunk_size = len(loop_body) // num_procs 
procs = [] 
for i in range(num_procs): 
start = i * chunk_size 
end = (i+1) * chunk_size if i != num_procs-1 else len(loop_body) 
proc = multiprocessing.Process(target=loop_body[start:end]) 
proc.start() 
procs.append(proc) 
for proc in procs: 
proc.join() [3] 

Yüklə 132,29 Kb.

Dostları ilə paylaş:
1   ...   7   8   9   10   11   12   13   14   15




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin