Youtube-dl çıktısına nasıl ulaşabilirim?

Başlatan istiklal, 04 Şubat 2013 - 21:02:54

« önceki - sonraki »

0 Üyeler ve 2 Ziyaretçi konuyu incelemekte.

istiklal

Selam arkadaşlar video indirme programı youtube-dl bildiğimiz gibi uçbirimde çalışıyor. Ben bu programın uçbirim çıktısından [download]  73.8% of 87.96M at  103.24k/s ETA 03 şeklindeki çıktısına ulaşmak istiyorum. Yani buradaki tamamlanma yüzdesi, indirme hızı ve video boyutunu ayrı ayrı elde edebilir miyim?

heartsmagic

Eğer çıktı buysa ve sürekli aynı biçimde kalıyorsa cut aracına bakmalısın. Mesleâ bu çıktıyı cut aracına bağlayıp indirme yüzdesini şu şekilde alabiliriz.

... | cut -d" " -f2

cut aracı basittir, biraz bakarsan anlarsın nasıl olduğunu. SUDO'nun son sayısında da değiniliyor kendisine ayrıca.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

istiklal

Alıntı yapılan: heartsmagic - 05 Şubat 2013 - 12:12:05
Eğer çıktı buysa ve sürekli aynı biçimde kalıyorsa cut aracına bakmalısın. Mesleâ bu çıktıyı cut aracına bağlayıp indirme yüzdesini şu şekilde alabiliriz.

... | cut -d" " -f2

cut aracı basittir, biraz bakarsan anlarsın nasıl olduğunu. SUDO'nun son sayısında da değiniliyor kendisine ayrıca.

Daha doğrusu çıktının tamamı şu şekilde oluyor. youtube-dl -o "%(stitle)s.%(ext)s" http://www.youtube.com/watch?v=hLrlATNa6nE
WARNING: %(stitle)s is deprecated. Use the %(title)s and the --restrict-filenames flag(which also secures %(uploader)s et al) instead.
[youtube] Setting language
[youtube] hLrlATNa6nE: Downloading video webpage
[youtube] hLrlATNa6nE: Downloading video info webpage
[youtube] hLrlATNa6nE: Extracting video information
[download] Destination: AJAX Tutorial - 27 - Holy Carp!.flv
[download]  10.6% of 10.21M at  322.40k/s ETA 00:28


Benim bilgilerini ayırmak istediğim ise en son satır.

heartsmagic

Son satır da alınır bir şekilde ancak benim gözden kaçırdığım bir şey olmuş, ki o da konu Python konusuymuş :) Kısacası çözüm önerilerinin Python adına olmasını istiyorsundur sen.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

istiklal

#4
Alıntı yapılan: heartsmagic - 06 Şubat 2013 - 12:26:45
Son satır da alınır bir şekilde ancak benim gözden kaçırdığım bir şey olmuş, ki o da konu Python konusuymuş :) Kısacası çözüm önerilerinin Python adına olmasını istiyorsundur sen.

Evet benimde hatam var tabi sonradan fark ettim :) Pythondan filan bahsetmedim. :) Tam olarak şöyle diyeyim python ile aşağıdaki kod ile videoyu indiriyorum. Fakat aynı şekilde verdiğiniz ... | cut -d" " -f kodu denedim ama bir çıktı alamadım.

python kodu:

import os
#http://www.youtube.com/watch?v=gpx2yNivuUY

os.system("youtube-dl -o '%(stitle)s.%(ext)s' http://www.youtube.com/watch?v=gpx2yNivuUY")


Tabi buradaki bilgiyi bir kereliğine almak istemiyorum. Örneğin biten kısmı değiştikçe bu bilgiyi alıp kullanmak istiyorum. :)

sem

Merhabalar,


bir kaç saniye araştırma fırsatı oldu bu kısa süre içerisinde doğru hatırlayıp hatırlamdığımı kontrol ettim fakat siz de tekrar kontrol ederseniz iyi olur...


Kontrol ettiğim bilgi şu;


C tarafındaki ile Python tarafındaki system() fonksiyonları aynı işlemi yapıyordu ve aynı şekilde sonuç döndürüyordu. Ve system() fonksiyonu çalıştırdığınız komutun sonucunu uygulama içerisinden size geri döndürmüyor. Sadece işlem başarılı mı başarısız mı oldu, bu bilgiye dair bir tam sayı döndürüyor (büyük ihtimalle başarı durumda 0 aksi halde 0 dan farklı bir değer döndürüyordu).


İstediğiniz ise bir komut çalıştırıp, çıktısını almak. Bunun için Pipe ları kullanmanız gerekir. Kısaca yapılacak işlem; ana süreç (process) ile (main process yani youtube-dl i çağırdığınız Python uygulaması)  çocuk süreç (child process) arasında bir boru kurarak, çocuk sürecin standart çıktısını (output) ana sürece yönlendirmek.


Bu şekilde karışık gibi görünen işlem ise;


http://stackoverflow.com/questions/4537259/python-how-to-pipe-the-output-using-popen
http://ubuntuforums.org/showthread.php?t=446973


gibi örnekleri ver; ihtiyacınız olan popen() -> Pipe Open metodu.


HAtta bizim forumda da vardı örneği.... Buldum sanırım, aşağıdaki konuya öncelikli olarak göz atabilirsiniz;




http://forum.ubuntu-tr.net/index.php?topic=28016.msg336417#msg336417




Kolay gelsin...


NOT: Çıktı durmadan değişiyor olacak sizin probleminizde %10 -> %20 vs gibi... Bunları dinlemek için farklı bir thread'e ihtiyacınız olabilir.
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

istiklal

#6
Alıntı yapılan: sem0900 - 07 Şubat 2013 - 09:22:57
Merhabalar,
...

gibi örnekleri ver; ihtiyacınız olan popen() -> Pipe Open metodu.

...

Teşekkürler. İstihzanın sitesinde bu soruma aşağıdaki gibi bir cevap geldi ama istediğim gibi olmadı malesef.Bu çıktıları bir dosyaya yazdırmayı denedim fakat işlem bitene kadar bir çıktı vermeyip indirme bittiğinde komple değişen değerleri dosyaya yazıyor. Print komutu ise indirme bitene kadar çıktı vermiyor. Yani video bitene kadar uçbirimde hiç bir çıktı görünmüyor.Sadece imleç yanıp sönüyor.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#  Copyright 2013 umit <umit@umit>

import subprocess
proc=subprocess.Popen("youtube-dl -o '%(stitle)s.%(ext)s' http://www.youtube.com/watch?v=gpx2yNivuUY", shell=True, stdout=subprocess.PIPE)
output=proc.communicate()[0]
print output

dosya=open("deneme.txt","a")
dosya.write(output)
dosya.close()


Dosyaya ise aşağıdaki şekilde kayıt ediyor.Çok uzun olduğu için tamamını koymadım.Üçnokta ile belirttiğim yeri kestim.
[youtube] Setting language
[youtube] gpx2yNivuUY: Downloading video webpage
[youtube] gpx2yNivuUY: Downloading video info webpage
[youtube] gpx2yNivuUY: Extracting video information
[download] Resuming download at byte 1044480
[download] Destination: AJAX Tutorial - 22 - Creating XMLHttpRequest Objects Correctly.flv

[download]  12.2% of 8.17M at     ---b/s ETA --:--
[download]  12.2% of 8.17M at  307.82k/s ETA 00:24
[download]  12.3% of 8.17M at  328.61k/s ETA 00:22
[download]  12.4% of 8.17M at   90.65k/s ETA 01:20
[download]  12.6% of 8.17M at  153.17k/s ETA 00:47
[download]  12.9% of 8.17M at  178.45k/s ETA 00:40
[download]  13.7% of 8.17M at  227.88k/s ETA 00:31
[download]  15.2% of 8.17M at  286.23k/s ETA 00:24
[download]  18.3% of 8.17M at  263.45k/s ETA 00:25
[download]  21.2% of 8.17M at  283.30k/s ETA 00:23
[download]  25.2% of 8.17M at  210.75k/s ETA 00:29
[download]  27.3% of 8.17M at  131.27k/s ETA 00:46
[download]  28.3% of 8.17M at  104.69k/s ETA 00:57
.
.
.
[download] 100.0% of 8.17M at   37.71k/s ETA 00:00



Jey@Nfer

Hocam ihtiyacınız olan şeyi tam olarak anlamadım ancak gördüğüm kadarıyla komut çıktılarını alıp o anda işlemek istiyorsunuz, doğru mudur?
Subprocces falan kısmı bana onu gösterdi?

Bunun için şöyle bir alternatifiniz var : commands modülü.

Örnek vereyim :
mesela dosya hakkkında bilgiler veren "file" komutu konsoldan kullanıdk :

$ file '/vmlinuz'
/vmlinuz: symbolic link to `boot/vmlinuz-3.2.0-36-generic'


çıktıyı ekranda gördük. Bunu pythonda etkileşimli olarak kullanmak istersek muhtemelen ilk olarak şunu deneriz :


>>> import os
>>> komut = "file "
>>> komut += '/vmlinuz'
>>> sonuc = os.system(komut)
/vmlinuz: symbolic link to `boot/vmlinuz-3.2.0-36-generic'
>>> sonuc
0
>>>


gördüğümüz gibi "sonuc" değişkenimizde bir şey yok.
oysa biz çıktıyı sonuç değişkenine yönlendirmek istemiştik.

Sizin durum da sanırım burdakiyle benzer?

bunun için şöyle bir şey kullanabilirsiniz :

>>> import commands
>>> sonuc = commands.getoutput(komut)
>>> sonuc
"/vmlinuz: symbolic link to `boot/vmlinuz-3.2.0-36-generic'"


yani "commands.getoutput" ile , içine yazdığımız komutun çıktılarını istediğimiz gibi yönlendirebiliriz.

Eğer tam olarak ihtiyacınız olan şey bu değilse , biraz daha detaylı açıklama yaparsanız yardımcı olmaya çalışırız.
Hırs , azim , tevekkül ...

www.mehmetvahit.net

istiklal

Alıntı yapılan: Jey@Nfer - 07 Şubat 2013 - 11:47:30
Hocam ihtiyacınız olan şeyi tam olarak anlamadım ancak gördüğüm kadarıyla komut çıktılarını alıp o anda işlemek istiyorsunuz, doğru mudur?
Subprocces falan kısmı bana onu gösterdi?

....

Eğer tam olarak ihtiyacınız olan şey bu değilse , biraz daha detaylı açıklama yaparsanız yardımcı olmaya çalışırız.

Şu an okuldayım :) Sadece cevap yazabileceğim. Kodu eve gidince deneme fırsatı bulacağım. :) Tam olarak istediğim ise şimdi video indirme programı youtube-dl ile videoyu indiriyorum. Video inerken 4-5 satırlık bir çıktı oluşuyor uçbirimde ve en alt satırında kalan zaman, videonun inen kısmının yüzde değeri, indirme hızı gibi bilgiler var ve anlık olarak değişiyor. İşte bu her değiştiğinde ya da yarım saniyede bir -artık nasıl olması mümkünse onu bilemiyorum- bu veriyi ya da verileri almak ve işlemek. Mesela  video %1,%5,%9 gibi ilerliyor.Ben bu bölümdeki veriyi alıp projemde kullanmak istiyorum. Yani bu biten yüzde kısmı mesela progressbar da ilerlemesini göstermek istiyorum diyebiliriz. Ya da bu sayısal veriyi herhangi bir yerde kullanmak istiyorum :)

Jey@Nfer

evet az önce baktım tam olarak istediğiniz işlemi yapmıyor :

>>> import commands
>>> sonuc=commands.getoutput('youtube-dl "http://www.youtube.com/watch?v=_f_p0CgPeyA"')
>>> sonuc
'[youtube] Setting language\n[youtube] _f_p0CgPeyA: Downloading video webpage\n[youtube] _f_p0CgPeyA: Downloading video info webpage\n[youtube] _f_p0CgPeyA: Extracting video information\n[download] Destination: _f_p0CgPeyA.flv\n\r[download]   0.0% of 4.56M at   14.77k/s ETA 05:16\r[download]   0.1% of 4.56M at   37.20k/s ETA 02:05\r[download]   0.2% of 4.56M at   57.95k/s ETA 01:20\r[download]   0.3% of 4.56M at   74.95k/s ETA 01:02\r[download]   0.7% of 4.56M at   89.46k/s ETA 00:51\r[download]   1.4% of 4.56M at   96.63k/s ETA 00:47\r[download]   2.7% of 4.56M at  101.64k/s ETA 00:44\r[download]   5.0% of 4.56M at  103.69k/s ETA 00:42\r[download]   7.3% of 4.56M at   96.36k/s ETA 00:44\r[download]   9.1% of 4.56M at  104.63k/s ETA 00:40\r[download]  12.5% of 4.56M at  100.09k/s ETA 00:40\r[download]  14.5% of 4.56M at  103.51k/s ETA 00:38\r[download]  17.3% of 4.56M at  105.25k/s ETA 00:36\r[download]  19.8% of 4.56M at  105.31k/s ETA 00:35\r[download]  22.1% of 4.56M at  105.25k/s ETA 00:34\r[download]  24.3% of 4.56M at  105.37k/s ETA 00:33\r[download]  26.6% of 4.56M at  105.38k/s ETA 00:32\r[download]  28.8% of 4.56M at  105.43k/s ETA 00:31\r[download]  31.1% of 4.56M at  105.51k/s ETA 00:30\r[download]  33.4% of 4.56M at  102.83k/s ETA 00:30\r[download]  35.0% of 4.56M at  105.48k/s ETA 00:28\r[download]  38.3% of 4.56M at  102.69k/s ETA 00:28\r[download]  40.0% of 4.56M at   99.89k/s ETA 00:28\r[download]  41.4% of 4.56M at   96.98k/s ETA 00:28\r[download]  42.5% of 4.56M at   94.22k/s ETA 00:28\r[download]  43.5% of 4.56M at   91.64k/s ETA 00:28\r[download]  44.3% of 4.56M at   91.91k/s ETA 00:28\r[download]  46.1% of 4.56M at   86.65k/s ETA 00:29\r[download]  47.0% of 4.56M at   87.43k/s ETA 00:28\r[download]  48.8% of 4.56M at   84.09k/s ETA 00:28\r[download]  49.7% of 4.56M at   84.30k/s ETA 00:27\r[download]  51.5% of 4.56M at   83.10k/s ETA 00:27\r[download]  52.8% of 4.56M at   81.74k/s ETA 00:26\r[download]  53.9% of 4.56M at   80.43k/s ETA 00:26\r[download]  54.8% of 4.56M at   79.11k/s ETA 00:26\r[download]  55.7% of 4.56M at   77.91k/s ETA 00:26\r[download]  56.6% of 4.56M at   78.20k/s ETA 00:25\r[download]  58.3% of 4.56M at   77.37k/s ETA 00:25\r[download]  59.5% of 4.56M at   76.15k/s ETA 00:24\r[download]  60.5% of 4.56M at   75.33k/s ETA 00:24\r[download]  61.4% of 4.56M at   74.46k/s ETA 00:24\r[download]  62.3% of 4.56M at   74.79k/s ETA 00:23\r[download]  64.2% of 4.56M at   73.03k/s ETA 00:22\r[download]  65.1% of 4.56M at   73.35k/s ETA 00:22\r[download]  67.0% of 4.56M at   71.77k/s ETA 00:21\r[download]  67.9% of 4.56M at   72.05k/s ETA 00:20\r[download]  69.7% of 4.56M at   70.63k/s ETA 00:19\r[download]  70.7% of 4.56M at   70.87k/s ETA 00:19\r[download]  72.5% of 4.56M at   69.40k/s ETA 00:18\r[download]  73.4% of 4.56M at   69.72k/s ETA 00:17\r[download]  75.3% of 4.56M at   68.73k/s ETA 00:16\r[download]  76.2% of 4.56M at   69.03k/s ETA 00:16\r[download]  78.1% of 4.56M at   67.92k/s ETA 00:15\r[download]  79.1% of 4.56M at   67.41k/s ETA 00:14\r[download]  79.9% of 4.56M at   67.69k/s ETA 00:13\r[download]  81.7% of 4.56M at   67.41k/s ETA 00:12\r[download]  82.9% of 4.56M at   65.89k/s ETA 00:12\r[download]  83.5% of 4.56M at   66.07k/s ETA 00:11\r[download]  84.8% of 4.56M at   65.93k/s ETA 00:10\r[download]  86.0% of 4.56M at   65.74k/s ETA 00:09\r[download]  87.2% of 4.56M at   65.84k/s ETA 00:09\r[download]  88.7% of 4.56M at   65.16k/s ETA 00:08\r[download]  89.6% of 4.56M at   65.40k/s ETA 00:07\r[download]  91.4% of 4.56M at   64.61k/s ETA 00:06\r[download]  92.3% of 4.56M at   64.85k/s ETA 00:05\r[download]  94.1% of 4.56M at   64.69k/s ETA 00:04\r[download]  95.3% of 4.56M at   64.41k/s ETA 00:03\r[download]  96.3% of 4.56M at   64.08k/s ETA 00:02\r[download]  97.3% of 4.56M at   63.66k/s ETA 00:01\r[download]  98.1% of 4.56M at   63.84k/s ETA 00:01\r[download]  99.7% of 4.56M at   63.75k/s ETA 00:00\r[download] 100.0% of 4.56M at   63.83k/s ETA 00:00'
>>>


gerçi bu çıktıyı düzenleyebilirsiniz ama istediğini şey bu değil.
Eşzamanlı olmasını istiyorsanız sanırım kaynak kodlarda biraz oynama yapmak gerekicek.
Hırs , azim , tevekkül ...

www.mehmetvahit.net

istiklal

Alıntı yapılan: Jey@Nfer - 07 Şubat 2013 - 12:27:53
evet az önce baktım tam olarak istediğiniz işlemi yapmıyor :
...
gerçi bu çıktıyı düzenleyebilirsiniz ama istediğini şey bu değil.
Eşzamanlı olmasını istiyorsanız sanırım kaynak kodlarda biraz oynama yapmak gerekicek.

Evet siz benden hızlı davranmışsınız. :) youtube-dl dosyasının içinden ulaşılabilir mi acaba ?

sem

Kaynak kod ile oynamayı gerektiren bir durum söz konusu değil arkadaşlar şimdilik.

İmleç yanıp sönüyor taa ki sonuca kadar. Çünkü;

Alıntı yapılan: sem0900
NOT: Çıktı durmadan değişiyor olacak sizin probleminizde %10 -> %20 vs gibi... Bunları dinlemek için farklı bir thread'e ihtiyacınız olabilir.



Aslında sorun Pipe yapısı ile alakalı. Pipe'ı ana threadde çalıştırıyorsunuz ki zaten tek bir threadiniz var. Bir pipe açıyorsunuz ve dinlemeye başlıyorsunuz. Pipe kapanana kadar uygulama bloke olmuş oluyor. Yukarıda dediğim gibi farklı bir thread üzerinden gitmeniz gerekebilir. Maalesef her şey copy - paste kadar kolay olmuyor =) Her problemin çözümü farklı olmak durumda olabiliyor sektörde =)..


Kaldı ki burada sorun aslında pipe da değil, çalıştırdığınız uygulama bitene kadar kendi uygulamanız da bloke durumda kalacaktır büyük ihtimalle.


Sorunumuz: Bir uygulama satır satır çıktı veriyor. Farklı bir uygulamanın bu çıktıların her bir satırına ihtiyacı var.
Çözüm Yolu; Ana uygulamayı bloke etmeden çıktı olarak gönderilen her bir satırı alarak, ilgili yüzde (%20 -> %30 -> %40... vs) ayrıştırılarak kullanılacak.


Algoritmik Gidişat diyelim;


Yol 1:
* Uygulama oluşturulur. Gerekli yerde yeni bir thread açılarak youtube-dl uygulaması çalıştırılır;
     * Çalıştırılıan uygulamanın çıktısı bir boru ile kendisini çağıran child process'e aktarır.
           * Thread içerisinden okunan değerlerden bir satır oluştukça ana thread tetiklenerek yeni ilerleme (progress) bilgisi güncellenir.




Ben olsan şöyle bir yöntem oluşturulabilir mi bir dener ve eğer olabiliyorsa bu şekilde devam ederdim;


* select() metodu Pipe'lar ile kullanılabiliyor mu?
* Kullanılabiliyorsa ;


   Ana thread içerisinde select() metodu ile sonsuz döngü oluştururlur; Pipe'a bilgi geldikçe döngü kırılarak pipe okunur ve güncelleme işlemi ana thread üzerinde yapılmış olur.


-> select() nedir?


    Ayrıntı için;
   man select


Kısaca: birden fazla dosya, soket dinlemek için kullanılan bir linux sistem çağrısıdır. Kısaca dinlenilecek olan tüm dosyalar, soketler bir "set" içerisinde tutulur. Daha sonra bu setteki bir dosya, sokete bir bilgi yazıldıkça döngü kırılmış olur.


Örnek uygulama var mı? C ile var;


http://forum.ubuntu-tr.net/index.php?topic=20263.0


Kısaca oyun tanımı ve konu ile alakası; konu ile alakası select() metodudur. Oyun stdout dosyasını yani dolaylı olarak klavye girdilerini dinler. Klavyeden bir şey girildikçe uygulama tepki verir... Burada da amaç youtube-dl uygulamasının bir satır yazdıkça bizim uygulamaya haber vermesi ve uygulamamızın tepki vermesini sağlamak.





".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

istiklal

#12
Alıntı yapılan: sem0900 - 07 Şubat 2013 - 19:12:59
Kaynak kod ile oynamayı gerektiren bir durum söz konusu değil arkadaşlar şimdilik.

İmleç yanıp sönüyor taa ki sonuca kadar. Çünkü;

Alıntı yapılan: sem0900
NOT: Çıktı durmadan değişiyor olacak sizin probleminizde %10 -> %20 vs gibi... Bunları dinlemek için farklı bir thread'e ihtiyacınız olabilir.

...

Çok açıklayıcı yazıyorsunuz teşekkürler ama thread olayını bir türlü anlayamadım. :) O konu benim açımdan tamamen bir karmaşa. Sanırım bu iletimin ardından gelecek cevap belli. "Önce thread konusunu öğren." :P


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 08 Şubat 2013 - 19:34:36

Arkadaşlar aşağıdaki şekilde bir arkadaş yardımıyla çözdük. Ama farklı çözümleri merak ediyorum. :)
import os
import subprocess
s=subprocess.Popen("youtube-dl -o '%(stitle)s.%(ext)s' http://www.youtube.com/watch?v=gpx2yNivuUY",shell=True, stdout=subprocess.PIPE, universal_newlines=True )
while 1:
      A=s.stdout.readline()[:-1]
      if s.stdout.readline()[:-1]=='':
            break

sem

Yapılan çözüm yanlış görmüyorsam select() yerine while ile sonsuz döngüye girilmiş... Benzer çözümler. Elbet teknik olarak ufak farklılıklar var.


Bir uygulama yazdığımızda aksini belirtmediğimiz sürece salt bir tane izlek/thread kullanılır. Örneğin uygulama şöyle olsun;




Lütfen Bir sayı girin: 6      # Kullanıcıdan sayı istedik 6 girdi
İki katı: 12                           # sadece 2 ile çarpıp ekrana yazalım.


Bu kadar basit bir uygulamamız olsun. Fakat bunu yaparken arka planda daha doğrusu paralel olarak aynı anda bir saniye aralıklar ile bir dosyaya; "ben paralel çalışıyorum"


yazdıralım. =)


Bu kadar saçma örneği dünyaynın hiç bir yerinde bulamazsınız sanırım =) Ama yeterli konu ile ilgili olarak. Bu iki işlemi yani dosyaya yazı yazmak ve kullanıcının girdiği sayıyı iki ile çarpmak farklı olarak değerlendirildiğinde çok basit. Fakat normal şartlarda bunları aynı anda yapma imkanımız yok maalesef. Bu şekilde aynı anda işlem yapmak istersek thread'lere ihtiyaç duyuyoruz. Yani ben dosyaya yazı yazarken kullanıcının klavyeden girdiği sayıyı da aynı anda okuyabilmeliyim.


Konudaki örnek ise youtube-dl çıktısı okurken bir yandan da okunan çıktıların kullanıcıya gösterilmesi konusu var. Paralelde yapılması bir çözüm olarak görülürse thread'leri kullanmamız gerekiyor;


http://docs.python.org/2/library/threading.html
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

istiklal

@sem0900 teşekkür ederim :) ama thread konusunu direkt benim örneğe uygun vermediğin taktirde anlayamıyorum malesef. O konu kafamı karıştırıyor kendi işlerime uygulayacak kadar öğrenemedim mantığını çözemedim bir türlü :s