Teroka data dalam kernel berterusan
Panduan ini menunjukkan cara membolehkan ejen memuatkan sesuatu yang mahal sekali sahaja dan kemudian mengajukan beberapa soalan tentangnya, dan bukannya membayar kos muatan itu pada setiap soalan.
Alat eval menjalankan penterjemah berterusan. Pemboleh ubah, import dan data yang dimuatkan terus kekal antara panggilan.
Mengapa tidak jalankan skrip sahaja
Bahagian bertajuk “Mengapa tidak jalankan skrip sahaja”python -c sekali laksana membayar kos persediaan pada setiap soalan. Memuatkan dataframe mengambil masa beberapa saat dan seratus megabait; melukis cartanya mengambil masa beberapa milisaat. Apabila setiap soalan membebankan kos muatan, ejen mengajukan lebih sedikit soalan daripada yang sepatutnya — dan setiap jawapan kembali sebagai teks yang kemudiannya perlu dihuraikan semula.
Muat sekali, kemudian tanya
Bahagian bertajuk “Muat sekali, kemudian tanya”Muatkan
data/runs.csvdan beritahu saya tempoh p95 mengikut ejen.
import pandas as pdruns = pd.read_csv("data/runs.csv")len(runs)Ungkapan terakhir digaungkan seperti cara notebook melakukannya, jadi len(runs) melaporkan bilangan baris tanpa print.
Kemudian, dalam panggilan berasingan:
runs.groupby("agent")["duration_ms"].quantile(0.95).sort_values()runs masih dimuatkan. Bingkai pandas dikembalikan sebagai jadual dan bukan sebagai repr.
Carta muncul dalam sembang
Bahagian bertajuk “Carta muncul dalam sembang”import matplotlib.pyplot as pltruns.groupby("agent")["duration_ms"].mean().plot.bar()Rajah ditangkap selepas sel itu dan dikembalikan sebagai imej, yang dipaparkan oleh transkrip. Anda nampak carta itu; ejen pun sama.
Rajah ditutup selepas ditangkap. Rajah yang tidak dikumpulkan akan dilukis semula dan dihantar semula oleh sel seterusnya juga, jadi sesi lima sel akan mengeluarkan carta pertama sebanyak lima kali.
Idiom yang memang anda akan taip
Bahagian bertajuk “Idiom yang memang anda akan taip”Semua ini ditulis semula menjadi kod biasa dan bukan menghasilkan ralat:
| Yang anda taip | Apa yang berlaku |
|---|---|
%pip install x |
Menjalankan pip, kemudian mengosongkan cache modul supaya import seterusnya melihatnya |
%cd path |
os.chdir |
!command |
Subproses yang ditangkap |
%%bash |
Selebih sel itu sebagai skrip shell |
%%timeit |
1000 larian bermasa |
Pengusiran cache %pip itulah yang penting: memasang ke dalam penterjemah yang hidup tidak memberi apa-apa kesan kepada modul yang telah pun diimport, jadi tanpa ia, versi yang anda baru pasang bukanlah versi yang sedang berjalan.
Memanggil alat anda sendiri dari dalam sel
Bahagian bertajuk “Memanggil alat anda sendiri dari dalam sel”paths = tool("find", {"pattern": "**/*.dart", "path": "lib"})for path in paths.splitlines()[:100]: contents = tool("read", {"path": path}) ...tool(name, args) masuk semula ke dalam daftar alat ejen itu sendiri. Ini bermakna satu sel boleh menyebar ke lebih seratus fail, atau mewakilkan melalui task, tanpa model menghabiskan satu pusingan bagi setiap item.
Panggilan berjambatan menggantung timeout sel selagi ia belum selesai. Belanjawan itu mengukur ketakaktifan, bukan masa berlalu sebenar — sel yang menyebar ke subejen dan menunggu selama empat minit tidak tergantung, dan membunuhnya di pertengahan penyebaran akan menghilangkan seluruh keadaan kernel.
Mula semula
Bahagian bertajuk “Mula semula”eval(code: "…", reset: true, description: "Start a clean interpreter")Membuang penterjemah itu dan memulakan yang baharu yang bersih. Semua yang dimuatkan hilang, dan itulah maksudnya.
Di mana kernel berjalan
Bahagian bertajuk “Di mana kernel berjalan”Dalam persekitaran terasing perbualan apabila perbualan itu memilikinya, dan pada hos jika sebaliknya.
Penterjemah berterusan yang dipandu oleh model yang membaca repositori yang tidak dipercayai ialah tepat-tepat tujuan pelaksanaan dalam persekitaran terasing sahaja wujud: panggilan bash sekali laksana sekurang-kurangnya tamat, manakala kernel ialah shell yang mengingati.
Ia tidak memulakan persekitaran terasing untuk sampai ke sana — peraturan yang sama yang menghalang tab stesen daripada bermula secara automatik. Jika anda mahu kernel itu berada dalam persekitaran terasing, buka shell perbualan itu dahulu. Lihat Berikan ejen mesin untuk diuji.
- Satu sel pada satu masa bagi setiap kernel. Dua sel yang berlumba dalam satu penterjemah ialah dua separuh daripada dua program yang berselang-seli dalam satu namespace.
- Output dihadkan. Sel yang berada dalam gelung cetak dipotong dan bukan dibiarkan memenuhi tetingkap konteks.
- Empat imej bagi setiap sel. Gelung plot boleh mengeluarkan satu rajah bagi setiap lelaran, dan setiap imej ialah kos tetap yang besar dalam permintaan yang membawanya.
- Kernel mati bersama larian. Kernel yang masih memegang dataframe selepas perbualan tamat ialah kebocoran.
Berkaitan
Bahagian bertajuk “Berkaitan”- Kotak pasir dan keselamatan — apa maksud “terasing” di sini
- Berikan ejen mesin untuk diuji — membuka persekitaran terasing
- Alat ejen terbina — argumennya