Ana içeriğe atla

Python Multithreading ile Büyük Verileri Okuma/Arama



Büyük Verileri Okuma Arama Yapma


Python ile büyük dosyaları verileri hızlı okuma, arama yapmayı nasıl yaparız? Bunun için yapılmış güzel programlar var lakin çoğu ya 30 gün deneme sürümü ya da ücretli. Ücretsiz olanları ise fazla zorladığınız zaman donabiliyor. Gelelim python ile büyük dosyaları işlemeye (big data read multithreading) 



Python ile işlerimizi hızlandırmak için threading kütüphanesini kullanacağız. Daha fazla bilgi için Python threading modülü sayfasına bakabilirsiniz.
Dosyayı belirtilen parçalara bölerek başlangıç ve bitiş noktalarını bir diziye aktarıyoruz daha sonra threading kütüphanesi ile oku fonksiyonuna gönderip uygun regex eşleşmesi olduğunda programı durduruyoruz. İstersek maximum işlem sayısını fazla yapabiliriz sistem izin verdiği miktarda. Daha fazla yaptığınızda memory error (bellek hatası ) alabilirsiniz.

Python Multithreading ile Büyük Dosyaları Okuma/Arama kodu



#python ile büyük dosyaları satır satır okuma işleme arama yapma
import os,time,re,sys,random,threading

#regex desenimiz
regex = r"[0-9]+"

dosyaYolu='data.txt'            
def oku(boyut):
    bas=boyut.split('/')[0]
    son=boyut.split('/')[1]
    f=open(dosyaYolu)
    f.seek(int(bas))
    lines=f.read(int(son)).splitlines()
    f.close()
    a=re.findall(regex,lines[0])
    if(str(a)!="[]"):
        print a
        raw_input('bulundu ...')
        

def isInt(x):
    if x%1 == 0:
        return False#tam bölünüyor
    else:
        return True


"""
Dosyayı belirtilen parcalara gore bir diziye aktarıyoruz.
Daha basitte yapılabilir.
ornek vermek gerekirse
0/100
101/200
201/300
"""
def boyutListHazirla(boyut,parca):
    bol=float(boyut)/float(parca)
    sayilar=[]
    print "toplam parca"+str(bol)
    print "toplam mb: "+str(boyut/1024*1024)
    for i in range(0,int(bol)):
        if i==0:
            j=i
        b=parca
        t=b*(i+1)
        s=str(j)+"/"+str(t)
        #print s
        sayilar.append(s)
        j=t+1
    if(isInt(bol)):
        isi=str(t+1)+"/"+str(boyut)
        #print isi
        sayilar.append(isi)

    return sayilar




boyut = os.path.getsize(dosyaYolu)
boyutlist=boyutListHazirla(boyut,50*1024*1024)#50 mb lik parcalar.

print len(boyutlist)

#ayni anda en fazla 5 islem yapiyor.
maxthreads = 5
for i in range(0,len(boyutlist)):
    while threading.activeCount() >= maxthreads:
        time.sleep(0.2)
        sys.stdout.write(str(i)+ " Bekliyor.\r")
        sys.stdout.flush()
    sys.stdout.write(str(i)+ " Araniyor.\r")
    sys.stdout.flush()
    threading.Thread(target = oku, args=(boyutlist[i])).start()

Yorumlar

Popüler Bloglar

Link tl reklam geçme

Link.Tl reklamı beklemeden geçmek! Link.tl de reklamlarla uğraşmadan javascript kod ile reklamı beklemeden bypass edip geçebilirsiniz. javascript : ciftklik = "http://link.tl/i" ; + document .location.pathname; window .location.href = ciftklik; Kodu Kopyala Tek yapmanız gereken yukarıdaki kodu yer imlerine eklemek. Daha sonra geçmek istediğiniz reklam da çalıştırmak. Link Geçme sitesi   online Videolu anlatım  Etiket bulutu: link tl atlama, link tl çevirici, link tl çeviri, link tl çözücü, link tl çalışan bot, link tl engelleme, link tl geçme, link tl geçici, link tl geçme sitesi, link tl hile, link tl hack, link tl hileleri, link tl link kısaltma, link tl link açma, link tl link çevirici, link tl script,link tl geçme, link tl geçici, link tl geçme sitesi, link tl geçilmiyor, link tl geçmiyor, link.tl geçemiyorum, link tl geç, link tl geçme 2017, link tl nasıl geçilir, link.tl otomatik geçme,link tl geçme 2018

WhatsApp Şaka Virüsü

Whatsapp Şaka virüsü ile internetten anlamayan arkadaşlarınıza link atarak eğlenebilirsiniz. Sosyal mühendisliğiniz ne kadar iyiyse inandırıcılıkta artar. Hem android hem ios kullanıcılarında çalışır. Baştan söyleyelim bu virüs değildir. Yine siz bilirsiniz. Bu aralar hacklenmedik sistem kalmadı :D CiftKlik.Net olarak sorumluluk kabul etmiyoruz. Whatsapp api'ları ile ekrana istediğimiz yazıyı yazarak sosyal mühendislik yapıyoruz.

Firebase (JS) ile Gerçek Zamanlı Veri Tabanı

Javascript Firebase Web Kullanımı Bu yazı, web uygulamaları arasındaki iletişim için Firebase 'in Javascript ile Gerçek Zamanlı Veritabanını ( Real Time Database)  anlatan Türkçe dökümantasyondur.  Gerçek Zamanlı Veritabanı , istemciler ve sunucu arasındaki iletişim için Websockets kullanır. Firebase Nedir , Özellikleri? JSON formatı ile verilerimizi  gerçek zamanlı olarak depolayabildiğimiz, anlık olarak değişiklikleri görebildiğimiz websocket apisidir.  Cloud Firestore, Cloud Functions,Authentication, Hosting, Cloud Storage ,Realtime Database... WebSocket ve Real time Nedir? WebSocket, tek bir TCP bağlantısı üzerinden iki yönlü iletişim kanalı sağlayan bir iletişim protokolüdür. WebSocket protokolü, sunucuya ve sunucudan gerçek zamanlı veri aktarımını sağlayarak, tarayıcı ile web sunucusu arasında etkileşimi sağlamaktadır. Bu, sunucunun istemci istemeden tarayıcıya içerik gönderebileceği ve bağlantıyı açık tutarak istediği zaman mesaj alabilmesini veya gön

Bütün yazılım dillerinde "Merhaba Dünya" kodları

1)  ASSEMBLY // Ekrana “Merhaba!” yazan örnek program kodu: mov ax,cs mov ds,ax mov ah,9 mov dx, offset Git int 21h xor ax,ax int 21h Git: db "Merhaba!",13,10,"$" 2)  ALGOL (ALGOrithmic Language) // ALGOL 68'e ait, örnek “Merhaba!” kodu: begin print(( "Merhaba!" , newline)) end

Sesiniz Taklit Edilebilir : Google Dublex, Lyrebird

Text To Speech Teknolojisi  Google Dublex, Lyrebird, VoCo Google I/O etkinliği sırasında Google Assistant 'ın yeni özelliği Duplex tanıtıldı. Yapay zeka tabanlı konuşma teknolojisi ile sesinizi taklit ettirebilir. Telefon görüşmelerinizi,randevularınızı ona yaptırabilirsiniz. Belkide ilerde şarkı söyletebilir, şiir okutabilirsiniz. Aklınıza ne gelirse.