İçeriğe geç
Muslu Yüksektepe

pychron

Python betikleri çalışırken geçen süreyi canlı gösteren, bitince özet çıkaran küçük bir komut satırı aracı.

pychron, bir Python betiğini çalıştırırken geçen süreyi terminalde canlı olarak gösteren küçük bir komut satırı aracı. Betiğin kendi çıktısını bozmadan, en alt satırda saniye saniye ilerleyen bir sayaç tutuyor. Betik bittiğinde başlangıç saatini, bitiş saatini ve toplam süreyi bir özet olarak yazıyor. 2026 yılının başında geliştirdim ve PyPI'da yayınladım.

Amaç

Veri aktarımı, toplu işlem ya da bakım işi yapan betikler bazen dakikalarca, bazen saatlerce çalışıyor. Bu sırada ekranda uzun süre hiçbir şey yazmayabiliyor ve betiğin takılıp takılmadığını anlamak zorlaşıyor. Bir işin ne kadar sürdüğünü ölçmek için de her seferinde betiğin içine zaman ölçen kod eklemek istemedim. pychron'u, herhangi bir betiği hiç değiştirmeden çalıştırıp süresini görebilmek için yazdım.

Nasıl çalışır

Aracı pychron main.py biçiminde çağırırım. Betik adından sonra yazılan bütün argümanlar olduğu gibi betiğe aktarılıyor. pychron, betiği aracın kendisini çalıştıran Python yorumlayıcısıyla ayrı bir süreç olarak başlatıyor. Bunu yaparken yorumlayıcıya -u parametresini veriyor; bu parametre çıktının ara bellekte bekletilmeden anında aktarılmasını sağlıyor. Betiğin standart çıktısı ve hata çıktısı tek bir akışta birleştiriliyor.

Aynı anda arka planda bir iş parçacığı (thread) çalışıyor. Bu iş parçacığı her saniye o anki saati ve başlangıçtan beri geçen saniyeyi aynı satırın üzerine yeniden yazıyor. Betikten yeni bir satır geldiğinde pychron önce sayaç satırını temizliyor, betiğin satırını basıyor ve sayaç bir sonraki saniyede kaldığı yerden devam ediyor. İki iş parçacığı terminale aynı anda yazmaya çalışmasın diye yazma işlemleri bir kilitle sıraya sokuluyor. Bu sayede betiğin çıktısı ile sayaç birbirine karışmıyor.

Betik sona erdiğinde sayaç durduruluyor ve ekrana bitiş saati ile saniye cinsinden toplam süre yazılıyor.

Öne çıkan özellikler

  • Geçen süreyi betik çalışırken gerçek zamanlı olarak gösteriyor.
  • Betiğin kendi çıktısını gizlemiyor ve bozmuyor.
  • Başlangıç saatini, bitiş saatini ve toplam süreyi ayrı satırlarda yazıyor.
  • Çıktıları ANSI renk kodlarıyla işaretliyor; pychron'a ait satırlar kırmızı bir önekle başladığı için betiğin çıktısından kolayca ayrılıyor.
  • Betik adı verilmeden çalıştırıldığında nasıl kullanılacağını gösteren kısa bir mesaj yazıyor.

Teknik altyapı

pychron tamamen Python standart kütüphanesiyle yazıldı ve hiçbir dış bağımlılığı yok. Betiği başlatmak için subprocess, sayacı çalıştırmak için threading, zaman hesapları için datetime ve time modüllerini kullanırım. Paket pyproject.toml ile setuptools üzerinden derleniyor, Python 3.9 ve üzerini destekliyor ve MIT lisansıyla dağıtılıyor. Kurulumdan sonra sisteme pychron adlı bir komut ekleniyor.

Kullanım alanları

  • Uzun süren veri işleme ve aktarım betiklerinin hâlâ çalıştığını ve ne kadar zamandır çalıştığını görmek için kullanırım.
  • Bir betikte yaptığım iyileştirmenin süreyi ne kadar kısalttığını, kodun içine ölçüm eklemeden karşılaştırabilirim.
  • Bakım ve yedekleme betiklerinin ne kadar sürdüğünü not etmek, zamanlanmış görevleri planlarken işime yarıyor.
Kategori
Geliştirici araçları
Yıl
2026

Teknolojiler

  • Python
  • PyPI
  • CLI

Bağlantılar

  • PyPI https://pypi.org/project/pychron/

Tüm projelere dön