6-Amaliy mashg’ulot Mavzu: ot samaradorligi monitoringi Ishdan maqsad



Yüklə 5,52 Mb.
səhifə4/9
tarix17.05.2023
ölçüsü5,52 Mb.
#110840
1   2   3   4   5   6   7   8   9
6-10


Ushbu kod yuqorida ko'rgan mexanizmdan ipni boshlash, Thread obyektini yaratish va keyin .start() ga qo'ng'iroq qilish uchun foydalanadi. Dastur Thread ob'ektlari ro'yxatini saqlaydi, shunda u keyinchalik .join() yordamida ularni kutishi mumkin.

Ushbu kodni bir necha marta ishlatish qiziqarli natijalarga olib kelishi mumkin. Mana mening mashinamdan olingan misol:



Agar siz chiqishni diqqat bilan ko'rib chiqsangiz, uchta ipning hammasi siz kutgan tartibda boshlanganini ko'rasiz, ammo bu holda ular teskari tartibda tugaydi! Bir nechta yugurish turli xil buyurtmalarni keltirib chiqaradi. Mavzularni ishga tushirish tartibi operatsion tizim tomonidan belgilanadi va oldindan aytish juda qiyin bo'lishi mumkin. Bu ishdan yugurishgacha o'zgarishi mumkin (va ehtimol bo'ladi), shuning uchun siz ish zarralarini ishlatadigan algoritmlarni loyihalashda buni bilishingiz kerak.
Python sizga iplarni muvofiqlashtirish va ularni birgalikda ishlatishga yordam berish uchun keyinroq ko'rib chiqiladigan bir nechta ibtidoiy elementlarni beradi. Undan oldin, keling, qanday qilib iplar guruhini boshqarishni biroz osonlashtirishni ko'rib chiqaylik.


Amaliyot mashg’ulotlarini bajarish uchun topshiriqlar.

  1. Nazariy ma’lumotlar bilan tanishib chiqish.

  2. Python yordamida “threading” va “time” modullarini import qilib olish

  3. Tuzilgan dasturni avval ketma-ket, so’ngra modullardan foydalanib parallel ishga tushirish

  4. Olingan ikki xil natijalarni screenshotga olish va saqlash.

  5. Turli masalalarni ushbu metodlar yordamida qo’llash.



Nazorat savollari:

  1. Thread tushunchasi nimani anglatadi?

  2. Time moduli nima maqsadda qo’llaniladi?

  3. Threadingdan foydalanganimizda qanday natijalarga erishishimiz mumkin?

from queue import Queue


import time, datetime, threading
students= [(99, "Rahmonjon"),
(76, "Habibullo"),
(75, "Tohir"),
(72, "Baxtiyor"),
(66, "Sadullo"),
(62, "Abdumalik"),
(50, "Ongback")]
def student(q):
while True:
# Получаем задание из очереди
check = q.get()
# Выводим время начала проверки
print(check[1], 'сдал работу в', datetime.datetime.now()
.strftime('%H:%M:%S'))
#Время затраченное на проверку, которое зависит от рейтинга
time.sleep((100-check[0])/5)
# Время окончания проверки
print(check[1], 'забрал работу в', datetime.datetime.now()
.strftime('%H:%M:%S'))
# Даём сигнал о том, что задание очереди выполнено
q.task_done()
# Создаем очередь
q = Queue()
# Загружаем в очередь студентов
for x in students:
q.put(x)
#создаём и запускаем потоки
thread1 = threading.Thread(target=student, args=(q,), daemon=True)
thread2 = threading.Thread(target=student, args=(q,), daemon=True)
thread1.start()
time.sleep(10)
thread2.start()
# Блокируем выполнение до завершения всех заданий
q.join()
print("Этот текст напечатается после окончания блокировки")




Yüklə 5,52 Mb.

Dostları ilə paylaş:
1   2   3   4   5   6   7   8   9




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

    Ana səhifə