๐Ÿ“ˆVerimli Kodlama

โฑ Fonksiyonun AldฤฑฤŸฤฑ Vakti Hesaplama

def time_func(func, *args):
    ts = time.time()
    func(*args)
    return time.time() - ts

๐Ÿง DeฤŸiลŸkenlerin DeฤŸerlerini Bulma

DeฤŸiลŸkenin objelerini ve deฤŸerlerini รถฤŸrenmek iรงin debug รงok faydalฤฑdฤฑr ๐ŸŒŸ

  • Debug modunda alt deฤŸiลŸkenlere bakฤฑp

  • Kod iรงerisinde kullanabilirsin

๐Ÿšฉ BaฤŸฤฑmlฤฑlฤฑklarฤฑ ve PythonPath'i Ayarlama

Bu modรผlรผ ana projenizin baลŸฤฑnda import ederek pythonpath ayarlanmasฤฑnฤฑ otomatize edebilirisiniz.

import os.path as osp
import sys

def add_path(path):
    if path not in sys.path:
        sys.path.insert(0, path)

this_dir = osp.dirname(__file__)

# Add lib to PYTHONPATH
PATH = "lib" # Bu kฤฑsma oath'e alฤฑnacak dizinleri yazฤฑn
lib_path = osp.join(this_dir, PATH)
root_path = osp.join(this_dir)

add_path(lib_path)
add_path(root_path)

๐Ÿ“Š Medyan Alma

// super slow
[a, b, c].sort()[1]
// fast
let max = Math.max(Math.max(a,b),c),
    min = Math.min(Math.min(a,b),c),
// the max and the min value cancel out because of the xor, the median remains
median = a^b^c^max^min;

Hฤฑz farkฤฑ iรงin buraya bakabilirsin

๐Ÿ› Zaman Hesaplama Sorunu

  • Keyword argument ile metod kullanฤฑldฤฑฤŸฤฑnda zaman iลŸlemlerinde sorun oluลŸmakta ๐Ÿค”

  • Keyword arguments fonksiyonlar tanฤฑmlandฤฑฤŸฤฑnda hesaplanฤฑr, bu yรผzden time'lar birbirine eลŸit olabilecek kadar kรผรงรผk olmakta

Stackoverflow'daki sorum

from pynput import keyboard
import atexit
from time import time as get_time
from datetime import datetime

LOG_FILE = "keyLog.txt"
DELIM = "|"
TIME_LIMIT = 20 * 60

start_time = get_time()s
pressedKeys = []

def calculate_time():
    global start_time
    return get_time() - start_time

# calculate neden 0 veriyor ๐Ÿค”
def save_to_file(passing_time = calculate_time()):
    global pressedKeys

    if passing_time is None:
        passing_time = calculate_time() # 0' vermiyor

    with open(LOG_FILE, "a+", encoding="utf-8") as file:
        lines = []
        lines.append(f"\n\n\n\n")
        lines.append(f"Tarih (Yฤฑl-Ay-Gรผn Saat-Dakika-Saniye.): {datetime.now()}")
        lines.append(f"Geรงen sรผre (s):                         {passing_time}")
        lines.append(f"Basฤฑlan karakter:                       {len(pressedKeys)}")
        lines.append(f"Saniye baลŸฤฑ tuลŸ basฤฑmฤฑ (key/s):         {len(pressedKeys) / passing_time}")
        lines.append(f"\n")
        lines.append("|".join(pressedKeys))

        file.write("\n".join(lines))

# Kapanma anฤฑnda รงalฤฑลŸacak metod
atexit.register(save_to_file)

# END ile iลŸlemi sonlandฤฑrma
def on_press(key):
    global pressedKeys

    char = None
    try:
        char = key.char
    except AttributeError:
        char = str(key)

    pressedKeys.append(char)

    time = calculate_time()
    if time > TIME_LIMIT:
        save_to_file(time)


def on_release(key):
    print("")
    if key == keyboard.Key.end:
        # Stop listener
        return False

# Collect events until released
with keyboard.Listener(
        on_press=on_press,
        on_release=on_release) as listener:
    listener.join()

๐Ÿ’ซ KoลŸullu ฤฐรง ฤฐรงe For Dรถngรผsรผ

Alttaki yapฤฑ yerine, bir sonraki yapฤฑyฤฑ kullanarak daha verimli ve anlaลŸฤฑlฤฑr kod yazabilrisin ๐Ÿ˜Š

  • Dรถngรผde fazladan kontrolรผ engelleriz

  • Her seferin tรผm deฤŸiลŸkenlere bakmak yerine, ihtiyacฤฑmฤฑz olanlara bakarฤฑz

KOSUL1 = 1
KOSUL2 = 1
KOSUL3 = 0

if KOSUL1 != 0 and "kosul1" in line:
    # yapฤฑlacaklar
    pass
elif KOSUL2 != 0 and "kosul2" in line:
    # yapฤฑlacaklar
    pass
elif KOSUL3 != 0 and "kosul3" in line:
    # yapฤฑlacaklar
    pass
conditions = []
conditions.add(('kosul1:', KOSUL1)) if KOSUL1 != 0
conditions.add(('kosul2:', KOSUL2)) if KOSUL2 != 0
patteconditionsrns.add(('kosul3:', KOSUL3)) if KOSUL3 != 0

for condition in conditions:
    if condition[0] in line:
        # Yapฤฑlacak iลŸlemler
        break

Last updated

Was this helpful?