Spyder: Spyder 4.0.0 sangat lambat saat menambah atau menghapus garis

Dibuat pada 9 Des 2019  ·  30Komentar  ·  Sumber: spyder-ide/spyder

Deskripsi Masalah

Spyder sangat lambat setiap kali saya menambahkan (dengan Enter) atau menghapus (dengan cara pintas disetel ke Ctrl + D) baris di Editor. Diperlukan rata-rata sesuatu yang mendekati satu detik untuk setiap baris. Saat ditahan, perintah baris akan buffer dan kemudian akan ditambahkan atau dihapus selambat mungkin dua detik per baris.

Masalah yang sama setelah spyder --reset. Juga mencoba mengaktifkan penyelesaian otomatis. Ini telah terjadi sejak kandidat beta / rilis dan saya belum menggunakannya karena ini. Spyder tidak dapat digunakan sekarang seperti ini untuk saya.

Langkah apa yang mereproduksi masalah?

  1. Tekan Enter atau Ctrl + D

Apa hasil yang diharapkan? Apa yang Anda lihat?

Saya berharap tidak memakan waktu lama seperti versi yang lebih lama.

Versi

  • Versi Spyder: 4.0.0
  • Versi Python: 3.7.5
  • Versi Qt: 5.9.6
  • Versi PyQt: 5.9.2
  • Nama / versi Sistem Operasi: Win 10

Dependensi

cloudpickle> = 0.5.0: 1.2.2 (OK)
pygments> = 2.0: 2.5.2 (OK)
qtconsole> = 4.6.0: 4.6.0 (OK)
nbconvert> = 4.0: 5.6.1 (OK)
sphinx> = 0.6.6: 2.2.2 (OK)
pilint> = 0,25: 2,4.4 (OK)
psutil> = 0.3: 5.6.7 (OK)
qtawesome> = 0.5.7: 0.6.0 (OK)
qtpy> = 1.5.0: 1.9.0 (OK)
daging buah> = 0.4: 0.7.5 (OK)
zmq> = 17: 18.1.0 (Oke)
chardet> = 2.0.0: 3.0.4 (OK)
numpydoc> = 0.6.0: 0.9.1 (OK)
spyder_kernels> = 1.8.1; <2.0.0: 1.8.1 (OK)
qdarkstyle> = 2,7: 2,7 (Oke)
atomicwrites> = 1.2.0: 1.3.0 (OK)
diff_match_patch> = 20181111: 20181111 (Oke)
intervaltree: Tidak ada (OK)
pengawas: Tidak ada (OK)
keyring: Tidak ada (OK)
pexpect> = 4.4.0: 4.7.0 (OK)
pympler: Tidak ada (OK)
sympy> = 0.7.3: 1.4 (OK)
cython> = 0.21: 0.29.14 (OK)
IPython> = 4.0: 7.10.1 (OK)
matplotlib> = 2.0.0: 3.1.1 (OK)
panda> = 0.13.1: 0.25.3 (OK)
numpy> = 1.7: 1.17.4 (OK)
scipy> = 0.17.0: 1.3.1 (OK)
pyls> = 0.31.2; <0.32.0: 0.31.2 (OK)
rtree> = 0.8.3: 0.8.3 (OK)

Editor Bug

Komentar yang paling membantu

@bcolsen Selain hanya memperbarui file saat ini, seharusnya juga tidak memperbarui jika penjelajah garis besar bahkan tidak terlihat (seperti yang dikonfirmasi oleh pengujian saya sekarang).

Semua 30 komentar

@ gabrielclow , deskripsi Anda tidak cukup. Silakan posting:

  1. Jenis file apa yang Anda edit (Python atau lainnya)?
  2. Berapa banyak baris yang Anda ajukan?
  3. Apakah Anda mengaktifkan hal-hal seperti "Panduan indentasi"?

Terakhir, silakan posting masalah video (gif animasi dengan Licecap) untuk melihat apa yang sebenarnya Anda maksud.

@ gabrielclow , deskripsi Anda tidak cukup. Silakan posting:

  1. Jenis file apa yang Anda edit (Python atau lainnya)?
  2. Berapa banyak baris yang Anda ajukan?
  3. Apakah Anda mengaktifkan hal-hal seperti "Panduan indentasi"?

Terakhir, silakan posting masalah video (gif animasi dengan Licecap) untuk melihat apa yang sebenarnya Anda maksud.

  1. Saya hanya mengedit file .py
  2. Sepertinya tidak tergantung pada jumlah baris. Terjadi dalam file kecil dengan 50 baris hingga besar dengan 5k baris.
  3. Saya hanya menggunakan pelengkapan otomatis (konfigurasi di tangkapan layar). Sisanya dimatikan (tanpa linting, tidak ada linting gaya kode, tidak ada linting docstring, tidak ada panduan indentasi). Saya tidak memiliki pengaturan bahasa lain dan saya juga mencoba mengaktifkan dan menonaktifkan Kite.

autocomplete

Di gif, saya tahan Enter, tunggu baris baru dibuat dan kemudian tahan Ctrl + Z untuk menghapusnya (efek yang sama seperti Ctrl + D, jadi saya menebak itu juga tidak ada hubungannya dengan jalan pintas). Spyder kemudian menghentikan dan menambah atau menghapus garis dengan sangat lambat alih-alih melakukannya dengan lancar:

stopwatch

update : ternyata, jika saya menutup beberapa file, perlambatannya kurang terlihat!
perbarui 2 : juga, jumlah perlambatan tampaknya terkait dengan jumlah file terbuka + jumlah baris di setiap file, tetapi itu terjadi terlepas dari yang sedang dipilih. Jika saya hanya menyimpan beberapa file yang lebih kecil dan menutup sisanya, itu jauh lebih lancar
pembaruan 3 : jika saya menahan terlalu lama atau menekan terlalu cepat, Spyder bahkan dapat berhenti sebentar

Selain itu, jumlah perlambatan tampaknya terkait dengan jumlah file yang terbuka

Berapa banyak file yang telah Anda buka saat Anda melihat pelambatan terparah?

Selain itu, jumlah perlambatan tampaknya terkait dengan jumlah file yang terbuka

Berapa banyak file yang telah Anda buka saat Anda melihat pelambatan terparah?

Saya kebanyakan bekerja dengan 6-8 file terbuka. Biasanya sekitar dua di antaranya lebih besar (4k-5k baris) dan sisanya adalah file yang lebih kecil dengan 100-500 baris.

@ CAM-Gerlach, apakah Anda pernah melihat sesuatu seperti ini sebelumnya?

Jika saya boleh mengomentari ini, saya juga mengalami masalah yang sama, yang sebenarnya membuat saya menghapus Spyder 4 dan kembali ke Spyder 3.3.6.
Saya hanya mengaktifkan pengaturan yang diaktifkan di Spyder 3 juga, jadi PEP8 memeriksa; penyelesaian kode dan detail diaktifkan; tetapi tidak ada pemeriksaan docstring; potongan kode; hover deskripsi; layang-layang; dll.
Perlambatan ini seperti yang ditunjukkan dalam GIF @gabrielclow , meskipun terkadang butuh waktu hingga 2 detik untuk memasukkan satu baris.

Saat saya membangun paket besar, tidak jarang saya memiliki 30-50 file Python yang terbuka secara bersamaan, beberapa di antaranya dapat dengan mudah berisi lebih dari 3k baris kode (saya membukanya ketika saya memperhatikan perlambatan besar-besaran).
Karena saya menggunakan 3 monitor secara bersamaan untuk mengedit skrip saya hampir sepanjang waktu, yang dapat menampung maksimal 8 panel, dan saya perlu sering berpindah antar file, menutup sebagian besar file ini tidak akan berfungsi untuk saya.

Saya pribadi merasa bahwa alasan utama perlambatan ini, adalah ada cukup banyak database dan skrip yang perlu diperbarui / dijalankan setiap kali file terbuka diubah.

Apakah ada, kebetulan, skrip yang dijalankan di semua baris di semua file yang terbuka setiap kali file diubah?
Ini akan menjelaskan mengapa perlambatan tampaknya berskala dengan jumlah baris gabungan di semua file yang terbuka, dan mengapa tampaknya tidak bergantung pada file yang sedang diedit.

Saya dapat mengkonfirmasi bug ini. Ini tidak terlalu buruk (tidak benar-benar menyadarinya sampai sekarang) di komputer saya tetapi menambahkan / menghapus baris jauh lebih lambat daripada menambahkan teks. Masalah enter benar-benar terlihat jika Anda menahannya.

@bcolsen , bagaimana kami dapat mereproduksinya?

Buka sekitar 40 file dan sepertinya lambat cukup bagus. Sepertinya ada sesuatu di docdidchange yang memeriksa semua file, bukan hanya yang aktif. Mungkin outliner.

@ ccordoba12 Sejauh yang saya tahu, perilaku ini pada dasarnya sama dengan # 8864, dan tentu saja saya dapat melakukan repro dengan pengaturan bersih di Spyder 4 final hanya dengan mainwindow.py terbuka selama panduan indentasi diaktifkan ( memiliki panel terpisah membuat lag menjadi dua kali lipat atau lebih). Menghapus baris memiliki jeda utama yang sama (persis seperti yang dijelaskan di sini; dengan latensi ~ 1 detik dan penundaan berulang ~ 1 detik pada mesin yang cukup kuat, dan diskalakan secara proporsional dengan panjang file dan jumlah panel terpisah yang terbuka) seperti hal lain yang saya uji di sana (memindahkan baris, menggandakan baris, dll), dan saya dapat mengonfirmasi bahwa itu masih terjadi di Spyder 4 final dengan hanya file temp dan mainwindow.py terbuka dengan pengaturan bersih.

Namun, saya pikir panduan indentasi tidak diaktifkan secara default, dan memang tampaknya tidak diaktifkan setelah saya mengatur ulang prefs, tetapi saya tidak dapat melakukan repro mendekati jumlah jeda ini dengan pengaturan lain (kode real-time analisis, penyelesaian OTF, kesalahan garis bawah dan peringatan, tampilkan ruang kosong, dll,); meskipun dengan semuanya diaktifkan, simpan panduan indentasi, itu sedikit tertinggal.

Apakah ada, kebetulan, skrip yang dijalankan di semua baris di semua file yang terbuka setiap kali file diubah?

LSP dipanggil, dan saya awalnya mengira itu saja tetapi berdasarkan perilakunya dengan panel terpisah, item tertentu yang ditampilkan tetapi tidak yang lain, dll. Saya pikir itu mungkin terkait dengan gambar ulang (menggambar seluruh file, bukan hanya yang terlihat area, dll). Tapi itu jauh di atas nilai gajiku.

@ ccordoba12 Sejauh yang saya tahu, perilaku ini pada dasarnya sama dengan # 8864, dan tentu saja saya dapat melakukan repro dengan pengaturan bersih di Spyder 4 final hanya dengan mainwindow.py terbuka selama panduan indentasi diaktifkan ( memiliki panel terpisah membuat lag menjadi dua kali lipat atau lebih).

Jika saya juga mengaktifkan panduan indentasi bersamaan dengan membuka 50 file saya dan 8 panel terpisah (yang biasanya saya edit file saya), jeda meningkat ke mana saja antara 6 hingga 10 detik per baris baru.
Komputer yang saya gunakan adalah desktop game kelas atas, jadi ini sebenarnya bukan karena kekuatan mesin.

@dalthviz dan saya mencoba mereproduksi # 8864 namun tidak berhasil. Mohon maaf untuk mengatakannya, tetapi hingga kami dapat mereproduksinya, tidak ada yang dapat kami lakukan.

Buka sekitar 40 file dan sepertinya lambat cukup bagus. Sepertinya ada sesuatu di docdidchange yang memeriksa semua file, bukan hanya yang aktif. Mungkin outliner.

Oke, itu awal yang bagus. Kami akan memeriksa yang ini.

@ ccordoba12 Saya telah menemukan sumber dari kelambatan ini, yang pada kenyataannya tampaknya menjadi jeda "dasar" utama yang dirasakan di Spyder 4 vs. Spyder 3 yang telah saya bicarakan untuk sementara waktu: Seperti yang disarankan @bcolsen , itu memang panel garis besar, meskipun sebenarnya muncul terlepas dari apakah panel tersebut terbuka atau tertutup. Pada mesin kelas bawah, ini benar-benar terlihat (meskipun tidak seburuk itu) dengan hanya temp.py dan mainwindow.py terbuka, tidak ada lagi yang diaktifkan dan tidak ada panel garis yang terbuka. Berikut cara repro dari pengaturan bersih:

  1. Buka mainwindow.py dan panel editor terpisah, dan setel panel kanan untuk menampilkan temp.py dan panel kiri untuk menampilkan mainwindow.
  2. Tahan hapus / duplikat / pindahkan garis di panel kiri (jendela utama), batalkan / ulangi, dll. Untuk hal yang sama. Kelambatan kecil tapi terlihat jelas terlihat.
  3. Buka panel Outline (yang disembunyikan secara default). Ini (karena bug kecil tapi berguna) menghapus sinkronisasi file yang ditampilkan di panel garis dari yang difokuskan, karena itu beralih untuk menampilkan file yang aktif di panel terbagi paling kanan daripada panel split aktif saat dibuka / tidak disembunyikan.
  4. Coba lagi menghapus / etc / lines di mainwindow. Ada sedikit jeda dan tingkat pengulangan lebih tinggi (kemungkinan akan lebih terlihat dengan mesin berkinerja lebih rendah)
  5. Klik pada panel kanan (temp.py), dan kemudian kembali ke panel kiri (mainwindow) untuk membuat penjelajah garis besar dengan benar menunjukkan garis besar panel kiri.
  6. Coba lagi menghapus / dll., Dan jeda kembali, sama seperti di langkah 2 (saat penjelajah garis tidak terlihat sama sekali)

Untuk mengujinya dengan banyak file, saya mencari import os di direktori spyder , membuka 40-50 file pertama dalam tampilan panel terpisah (lebih sedikit file yang lebih besar akan menghasilkan efek yang setara) dan mengulangi langkah-langkah 2-6 di atas. Bahkan pada file pendek, ada jumlah lag yang jauh lebih besar (mirip dengan level panduan indentasi di Mainwindow) saat menghapus baris di kedua langkah 2 dan 6 (outline explorer disembunyikan, dan ditampilkan pada file aktif), sementara pada dasarnya tidak ada lag (seolah-olah tidak ada file yang terbuka, atau tingkat Spyder 3) pada langkah 4 (outline explorer terbuka dan disinkronkan dari file aktif).

Sementara itu, mengaktifkan panduan indentasi untuk kedua kali, menghapus baris / dll sangat lambat terlepas dari jumlah file yang dibuka, dan kelambatan yang dihasilkan tampaknya hanya dipengaruhi secara substansial oleh panjang file saat ini yang dimodifikasi dan jumlah panel yang dipisahkan berkas.

  1. Buka panel Outline (yang disembunyikan secara default). Ini (karena bug kecil tapi berguna) menghapus sinkronisasi file yang ditampilkan di panel garis dari yang difokuskan, karena itu beralih untuk menampilkan file yang aktif di panel terbagi paling kanan daripada panel split aktif saat dibuka / tidak disembunyikan.

Ini benar-benar terdengar seperti apa yang saya alami tetapi hanya menambahkan detail lain: Saya bekerja dengan satu jendela editor terpisah di layar lain dan saya menutup panel editor di Spyder setiap kali saya meluncurkannya. Jadi saya masih mengalami bug ini dengan jendela editor tunggal tanpa panel terpisah, jika relevan. Panduan indentasi juga membuatnya lebih lama.

Saya harap Anda dapat menemukan jawabannya dan ini segera diperbaiki sehingga saya dapat menggunakan mode gelap yang hebat di 4.0.0

Saya dapat mengonfirmasi bahwa setiap kali baris ditambahkan atau dihapus, garis besar memperbarui semua file yang terbuka. Hal ini menyebabkan bertambahnya waktu untuk penghapusan / penambahan baris yang meningkat dengan jumlah file yang terbuka. Saya telah membuat "perbaikan" sederhana pada PR di atas yang tampaknya memperbaiki masalah dengan banyak file yang terbuka. @ impact27 Pikiran?

Masalah yang terpisah tetapi jelas terkait adalah bahwa file besar (> 2000 baris) juga lambat untuk diperbarui dengan perubahan baris. Memiliki 4 atau 5 dari file besar ini terbuka saat ini membuat segalanya menjadi lebih lambat dengan update_all makes. Dengan tambalan di atas, masalah yang dijelaskan oleh @ CAM-Gerlach di atas akan tetap terjadi pada file besar tetapi file kecil harus selalu cepat.

Masalah yang terpisah tetapi jelas terkait adalah bahwa file besar (> 2000 baris) juga lambat untuk diperbarui dengan perubahan baris. Memiliki 4 atau 5 dari file besar ini terbuka saat ini membuat segalanya menjadi lebih lambat dengan update_all makes. Dengan tambalan di atas, masalah yang dijelaskan oleh @ CAM-Gerlach di atas akan tetap terjadi pada file besar tetapi file kecil harus selalu cepat.

Sepertinya kita perlu memindahkan proses pemblokiran UI ke utas.

Sepertinya kita perlu memindahkan proses pemblokiran UI ke utas.

Ini yang terbaik. Saya pikir ini terkait dengan penyorot sintaks pada saat itu.

Saya pikir ini terkait dengan penyorot sintaks pada saat itu.

Ya, itu masalah karena infrastruktur penyorot sintaks Qt berjalan di utas utama: - \

@bcolsen Selain hanya memperbarui file saat ini, seharusnya juga tidak memperbarui jika penjelajah garis besar bahkan tidak terlihat (seperti yang dikonfirmasi oleh pengujian saya sekarang).

Saya mengalami masalah yang sama.
Spyder menjadi sangat lambat.
Saya berharap jika ada paket yang perlu saya perbarui.

@NaderNazemi Seperti yang Anda lihat dari masalah ini, kami telah melakukan pengujian komprehensif, mengisolasi penyebab masalah dan telah menerapkan perbaikan yang sebagian besar harus menyelesaikannya di Spyder 4.0.1 yang akan segera dirilis, dengan lebih banyak peningkatan pada cara. Harap bersabar, atau jika Anda pengguna mahir, Anda dapat menguji cabang pengembangan Spyder terbaru dari Github untuk mencoba memperbaikinya sendiri. Terima kasih.

Saya melihat itu sudah diperbaiki, tetapi dalam versi 4.1.4 saya (mungkin ada versi yang lebih baru di luar sana) masalah terjadi ketika aplikasi pelengkapan otomatis Kite ditutup.

Hai @DGuidi , terima kasih telah memberi tahu kami. Sekadar informasi, Spyder 4.1.5 dirilis beberapa minggu yang lalu dengan beberapa perbaikan kecil lebih lanjut, dan beberapa perubahan besar yang diharapkan dapat meningkatkan kinerja Editor saat menggulir, mengetik dan menggunakan analisis kode waktu nyata / panduan indentasi / dll. diterapkan untuk versi berikutnya atau sedang dalam pengujian sekarang. Jika Anda suka berpetualang, akan sangat membantu jika Anda dapat mencoba # 13864 dan melihat apakah itu meningkatkan segalanya bagi Anda; Saya akan segera mengujinya.

Adapun Kite, saya tidak menggunakannya dan plugin milik pihak ketiga, tetapi sepertinya Anda telah mengisolasi kasus tertentu di mana lambat yang sangat membantu untuk menyelesaikannya, jadi semoga salah satu pengembang mereka, atau seseorang kalau tidak begitu cenderung, akan bisa mencari tahu apa yang sedang terjadi. Semoga berhasil!

@ CAM-Gerlach dan semuanya, hanya untuk menambahkan beberapa info, saya menggunakan WinPython64-3.8.5.0cod dari https://winpython.github.io/ jadi mungkin masalahnya bergantung pada beberapa konfigurasi dalam paket ini atau mungkin di windows saya mesin.
Sulit bagi saya untuk memutakhirkan versi spyder, setidaknya hingga winpython diperbarui: Saya tidak memiliki kemampuan untuk menginstal perangkat lunak di mesin saya.

Menonaktifkan penyelesaian layang-layang dan juga penyelesaian fallback TIDAK berfungsi untuk saya :(

Screenshot_362

@stonebig Adakah kemungkinan Anda mengetahui sesuatu tentang ini?

Untuk saat ini Anda dapat mencoba menonaktifkan opsi apa pun di bawah menu Source , Preferences > Editor dan Preferences > Completion and Introspection yang tidak terlalu Anda butuhkan, terutama panduan indentasi yang dapat menyebabkan kelambatan yang signifikan. Selain itu, kami memiliki sejumlah perbaikan yang siap atau dalam pengujian terakhir untuk Spyder 4.2.0, yang akan dirilis dalam beberapa minggu ke depan, yang bertujuan untuk meningkatkan kinerja Editor dan mengatasi sebagian besar penyebab perlambatan, terutama pada file yang lebih besar, tetapi tanpa dapat mengujinya untuk mengonfirmasi bahwa mereka meningkatkan berbagai hal untuk Anda, saya tidak begitu yakin harus merekomendasikan apa lagi, maaf.

Hai @ CAM-Gerlach, 95% waktu Windows mati lambat, ini terkait dengan aktivitas anti-virus atau saturasi memori.

Selain itu, plugin opsional Spyder mungkin tidak memperbaiki situasi

Oke terima kasih. Semoga 4.2.0 akan menyelesaikan, atau setidaknya memperbaiki situasi untuk @DGuidi

Apakah halaman ini membantu?
2 / 5 - 1 peringkat

Masalah terkait

yogu220172 picture yogu220172  ·  3Komentar

goanpeca picture goanpeca  ·  3Komentar

spyder-bot picture spyder-bot  ·  3Komentar

JesterEE picture JesterEE  ·  3Komentar

spyder-bot picture spyder-bot  ·  3Komentar