Saya menggunakan tqdm
untuk mencetak kemajuan dalam skrip yang saya jalankan di notebook Jupyter. Saya mencetak semua pesan ke konsol via tqdm.write()
. Namun, ini masih memberi saya keluaran miring seperti:
Yaitu, setiap kali baris baru harus dicetak, baris kemajuan baru dicetak pada baris berikutnya. Ini tidak terjadi ketika saya menjalankan skrip melalui terminal. Bagaimana saya bisa memecahkan masalah ini?
python
jupyter-notebook
tqdm
Rohan Saxena
sumber
sumber
tqdm_notebook
, saya bahkan dapat melakukanprint
s normal , dan itu tidak mempengaruhi progress bar.progressbar
stackoverflow.com/questions/3160699/python-progress-bar/…Jawaban:
Coba gunakan
tqdm.notebook.tqdm
alih-alihtqdm
, seperti dijelaskan di sini .Ini bisa sesederhana mengubah impor Anda ke:
from tqdm.notebook import tqdm
Semoga berhasil!
EDIT: Setelah pengujian, tampaknya
tqdm
benar - benar berfungsi dengan baik di 'mode teks' di notebook Jupyter. Sulit dikatakan karena Anda belum memberikan contoh minimal , tetapi sepertinya masalah Anda disebabkan oleh pernyataan cetak di setiap iterasi. Pernyataan cetak mengeluarkan angka (~ 0,89) di antara setiap pembaruan bilah status, yang mengacaukan output. Coba hapus pernyataan cetak.sumber
print()
pernyataan, saya menggunakantqdm.write()
. Namun,tqdm_notebook
memberikan hasil yang bagus. Terima kasihtqdm
, bukantqdm_notebook
? Ini berfungsi baik dengan Python 3.6 dan Jupyter 1.0.0.Ini adalah jawaban alternatif untuk kasus di mana tqdm_notebook tidak berfungsi untuk Anda.
Diberikan contoh berikut:
Outputnya akan terlihat seperti ini (progres akan terlihat merah):
Masalahnya adalah bahwa output ke stdout dan stderr diproses secara tidak sinkron dan terpisah dalam hal baris baru.
Jika dikatakan Jupyter menerima pada stderr baris pertama dan kemudian "diproses" output pada stdout. Kemudian setelah menerima output pada stderr untuk memperbarui progres, ia tidak akan kembali dan memperbarui baris pertama karena hanya akan memperbarui baris terakhir. Sebaliknya harus menulis baris baru.
Solusi 1, menulis ke stdout
Satu solusi adalah dengan mengeluarkan keduanya ke stdout sebagai gantinya:
Output akan berubah menjadi (tidak ada lagi merah):
Di sini kita dapat melihat bahwa Jupyter tampaknya tidak jelas sampai akhir baris. Kita bisa menambahkan solusi lain dengan menambahkan spasi. Seperti:
Yang memberi kita:
Solusi 2, tetapkan deskripsi
Mungkin secara umum lebih mudah untuk tidak memiliki dua output tetapi perbarui deskripsi, misalnya:
Dengan output (deskripsi diperbarui saat sedang diproses):
Kesimpulan
Anda sebagian besar dapat membuatnya berfungsi dengan baik dengan tqdm polos. Tetapi jika tqdm_notebook berfungsi untuk Anda, cukup gunakan itu (tetapi Anda mungkin tidak akan membaca sejauh itu).
sumber
progressbar
stackoverflow.com/a/34482761/1207193Sebagian besar jawabannya sudah ketinggalan zaman sekarang. Lebih baik jika Anda mengimpor tqdm dengan benar.
sumber
TqdmDeprecationWarning: This function will be removed in tqdm==5.0.0 Please use tqdm.notebook.tqdm instead of tqdm.tqdm_notebook
Jika kiat-kiat lain di sini tidak berfungsi dan - sama seperti saya - Anda menggunakan
pandas
integrasiprogress_apply
, Anda dapat membiarkannyatqdm
:Poin utama di sini terletak pada
tqdm.autonotebook
modul. Sebagaimana dinyatakan dalam instruksi mereka untuk digunakan dalam Notebook IPython , ini membuattqdm
memilih antara format progress bar yang digunakan dalam notebook Jupyter dan konsol Jupyter - karena suatu alasan masih kurang investigasi lebih lanjut di pihak saya, format khusus yang dipilih olehtqdm.autonotebook
bekerja dengan lancarpandas
, sementara yang lain tidakprogress_apply
khusus untuk itu .sumber
Untuk menyelesaikan jawaban oscarbranson: dimungkinkan untuk secara otomatis memilih versi progress bar konsol atau notebook tergantung dari mana ia dijalankan:
Info lebih lanjut dapat ditemukan di sini
sumber
Tidak satu pun di atas berfungsi untuk saya. Saya menemukan bahwa menjalankan mengikuti masalah ini setelah kesalahan (Ini hanya menghapus semua contoh bilah progres di latar belakang):
sumber
try: # Avoids problem on notebooks / Hydrogen IDE tqdm.tqdm._instances.clear() except Exception: pass
Untuk semua orang yang ada di windows dan tidak bisa menyelesaikan masalah bilah duplikat dengan salah satu solusi yang disebutkan di sini. Saya harus menginstal
colorama
paket sebagaimana dinyatakan dalam masalah tqdm yang diketahui yang memperbaikinya.Cobalah dengan contoh ini:
Yang akan menghasilkan sesuatu seperti:
sumber
Gunakan tqdm_notebook
sumber