Creating Process with Multiprocessing

Python multiprocessing.

SU

multiprocessing yordamida protsesslar yaratish

multiprocessing moduli threading.Thread sinfining ishlash usuliga o‘xshash qilib yaratilgan. Shu sababdan, oldingi bobdagi kodni olib, oqimlar o‘rniga protsesslardan foydalanish uchun o‘zgartirishingiz mumkin.

Quyida birinchi misolni qanday o‘zgartirish kerakligi ko‘rsatilgan:

import multiprocessing
import random
import time
 
def worker(name: str) -> None:
    print(f'Started worker {name}')
    worker_time = random.choice(range(1, 5))
    time.sleep(worker_time)
    print(f'{name} worker finished in {worker_time} seconds')
 
if __name__ == '__main__':
    processes = []
    for i in range(5):
        process = multiprocessing.Process(
            target=worker,
            args=(f'computer_{i}',))
        processes.append(process)
        process.start()
 
    for proc in processes:
        proc.join()

Bu yerda birinchi o‘zgarish, multiprocessing modulini import qilishdir. Qolgan ikkita import esa mos ravishda random va time modullari uchun ishlatiladi.

Keyin esa, ahmoqona worker() funksiyasi mavjud bo‘lib, u ba’zi ishlarni bajarayotganga o‘xshaydi. Bu funksiya ismni qabul qiladi va hech narsa qaytarmaydi. Funksiya ichida quyidagilar amalga oshiriladi:

  • Ishchi protsessning ismi chiqariladi.
  • time.sleep() orqali uzoq davom etadigan protsessni taqlid qilish amalga oshiriladi.
  • Nihoyat, protsess tugaganligi haqida xabar chop etiladi.

Kodning oxirgi qismida esa 5 ta ishchi protsess yaratiladi. Siz multiprocessing.Process() funksiyasidan foydalanasiz, u threading.Thread() kabi ishlaydi. Protsess uchun maqsadli funksiyani (target) va unga uzatiladigan argumentlarni ko‘rsatasiz. Asosiy farq shundaki, bu safar siz protsesslar ro‘yxatini yaratmoqdasiz. Har bir protsess uchun uning start() metodini chaqirib, protsessni ishga tushirasiz.

Keyin, protsesslar ro‘yxatidan foydalanib, har bir protsessning join() metodini chaqirasiz, bu Python'ga protsess tugashini kutib turishni bildiradi.

Skriptni ishga tushirganda quyidagiga o‘xshash natijalarni ko‘rasiz:

Started worker computer_0
Started worker computer_1
Started worker computer_2
Started worker computer_3
Started worker computer_4
computer_2 worker finished in 2 seconds
computer_1 worker finished in 3 seconds
computer_3 worker finished in 3 seconds
computer_0 worker finished in 4 seconds
computer_4 worker finished in 4 seconds

Skriptni har safar ishga tushirganingizda, random moduli tufayli chiqish natijalari har xil bo‘ladi. Buni o‘zingiz sinab ko‘ring va ko‘ring!

Last updated on

On this page

Xato haqida xabar berish