🧵Multithreading

Python üzerinde threadler

❔ Nedir

  • 🚶‍♂️ Thread ile satır satır ilerleyen kod yerine karma ilerleyen kodlar yazılabilir.

  • 📦 threading paketi kullanılır

Class
Açıklama

Thread

Sırasız olarak bir fonksiyonu çalıştırma

Timer

Belirli saniyelerde fonksiyonu çalıştırma

Scheduler

Bir plana göre fonksiyonu çalıştırma

📢 Python'da eş zamanlı işler multi-threading değil 🎎 Multiprocessing yapısı kullanılır.

🧱 Yapısı

import threading

def ela(fname, orig_dir, save_dir):
    """
    Paremetreli bir fonksiyon
    """
    pass

dirc = "Dizin"
for d in os.listdir(dirc):
    if d.endswith(".jpg") or d.endswith(".jpeg"):
        thread = threading.Thread(target=ela, args=[d, dirc, ela_dirc])
        threads.append(thread)
        thread.start()

# Join edilmez ise, arka planda çalışır, print yazısından sonra bitebiebilir
# Join edilirse threadlerin tamamlanmasını beklemiş oluruz.
for t in threads:
    t.join()

print("Finished!")

💫 Tekrarlamalı

from time import sleep
from threading import Thread

def tekrarla(ne, bekleme):
    while True:
        print ne
        sleep(bekleme)

if __name__ == '__main__':
    dum = Thread(target = tekrarla, args = ("dum",1))
    tis = Thread(target = tekrarla, args = ("tis",0.5))
    ah = Thread(target = tekrarla, args = ("ah",3))

    dum.start()
    tis.start()
    ah.start()
    
# dum
# tis
# ah

# tis
# dumtis

# tis
# dumtis

# tis
# ah
# tisdum

⏱ Zamanlayıcı

import threading


def run_check():
    print("Fonksiyon çalıştı.")
    threading.Timer(5.0, run_check).start()


run_check()

🎌 Planlı Çalışan

import sched, time
s = sched.scheduler(time.time, time.sleep)
def do_something(sc):
    print "Doing stuff..."
    # do your stuff
    s.enter(60, 1, do_something, (sc,))

s.enter(60, 1, do_something, (s,))
s.run()

🔗 Faydalı Bağlantılar

Last updated

© 2024 ~ Yunus Emre Ak ~ yEmreAk