วิธีปิด IPython Notebook อย่างถูกต้อง?


110

วิธีปิด IPython Notebook อย่างถูกต้อง?

ตอนนี้ฉันแค่ปิดแท็บเบราว์เซอร์แล้วใช้Ctrl+Cในเทอร์มินัล
น่าเสียดายที่การทำเครื่องหมายexit()หรือKill kernel upon exitไม่ช่วยอะไร (พวกเขาฆ่าเคอร์เนล แต่ไม่ออกจาก iPython)


หมายเลขผลิตภัณฑ์ของเคอร์เนล (โดยเฉพาะการเปิดพอร์ตโดยเฉพาะ) สามารถเห็นได้ด้วยหรือps -ax topดังนั้นจึงสามารถเลือกหยุดเคอร์เนลได้ด้วย [สิทธิ์ระดับผู้ดูแลระบบ] เพื่อยุติกระบวนการนั้น: # kill PID-of-ki สิ่งนี้ไม่อนุญาตให้มีขั้นตอนการปิดระบบภายในสำหรับเคอร์เนล แต่ไม่บังคับประเภท Ctl-C .... มีใครรู้บ้าง ถ้าสิ่งนี้ถูกวางแผนไว้สำหรับ jupyter?
Dr C

คำตอบ:


119

ขณะนี้ยังไม่มีวิธีที่ดีไปกว่า Ctrl + C ในเทอร์มินัล

เรากำลังคิดว่าจะปิดระบบอย่างชัดเจนได้อย่างไร แต่มีความตึงเครียดระหว่างโน้ตบุ๊กในฐานะแอปพลิเคชันผู้ใช้คนเดียวโดยที่ผู้ใช้มีอิสระที่จะหยุดมันและในฐานะเซิร์ฟเวอร์ผู้ใช้หลายคนซึ่งมีเพียงผู้ดูแลระบบเท่านั้นที่สามารถทำได้ เพื่อหยุดมัน เรายังไม่ได้หาวิธีจัดการกับความแตกต่าง

(สำหรับผู้อ่านในอนาคตนี่คือสถานการณ์ที่มีการเปิดตัว 0.12 และ 0.13 ในการพัฒนา)

อัปเดตธันวาคม 2560

IPython Notebook ได้กลายเป็น Jupyter Notebook เวอร์ชันล่าสุดได้เพิ่มjupyter notebook stopคำสั่งเชลล์ซึ่งจะปิดเซิร์ฟเวอร์ที่ทำงานบนระบบนั้น คุณสามารถส่งหมายเลขพอร์ตได้ที่บรรทัดคำสั่งหากไม่ใช่พอร์ตเริ่มต้น 8888

คุณยังสามารถใช้nbmanagerซึ่งเป็นแอปพลิเคชันบนเดสก์ท็อปที่สามารถแสดงเซิร์ฟเวอร์ที่กำลังทำงานอยู่และปิดเครื่องได้

ในที่สุดเรากำลังดำเนินการเพิ่ม:

  • ตัวเลือกการกำหนดค่าเพื่อปิดเซิร์ฟเวอร์โดยอัตโนมัติหากคุณไม่ได้ใช้งานตามเวลาที่กำหนด
  • ปุ่มในส่วนติดต่อผู้ใช้เพื่อปิดเซิร์ฟเวอร์ (เรารู้ว่ามันค่อนข้างบ้าที่ใช้เวลานานขนาดนี้การเปลี่ยน UI เป็นเรื่องที่ถกเถียงกัน)

1
บางทีอาจเป็นเพียงแค่เสนอตัวเลือกเพื่ออนุญาตให้มีการฆ่าอย่างชัดเจน (ผ่านปุ่มในเมนู?) หรือไม่ในไฟล์กำหนดค่าและบรรทัดคำสั่ง? เพื่อให้ผู้ที่ต้องการให้เซิร์ฟเวอร์ทำงานตลอดเวลาสามารถตั้งค่าการกำหนดค่าที่ถูกต้องได้
พูดไม่ออก

7
ไม่กี่ปีแล้วสถานการณ์นี้เปลี่ยนไปหรือไม่? Ctrl + C ยังคงเป็นวิธีเดียวที่แน่นอนในการปิดเซิร์ฟเวอร์ของโน้ตบุ๊ค iPython หรือไม่?
EFC

ยังไม่มีวิธีปิดจากภายใน UI ของโน้ตบุ๊ก แต่ฉันเขียนnbmanagerซึ่งเป็นเครื่องมือที่สามารถแสดงรายการและฆ่าเซิร์ฟเวอร์และเมล็ดของโน้ตบุ๊กได้
Thomas K

ดังนั้นฉันถือว่าการใช้jupyter notebook &เป็นความคิดที่ไม่ดีเนื่องจากCtrl+ Cใช้ไม่ได้กับสถานการณ์นี้
Naveen Dennis

ฉันลองแล้ว แต่ไม่มีวิธีพิมพ์อะไรลงในคอนโซลที่กำลังเรียกใช้กระบวนการ Jupyter Notebook นอกเหนือจาก ctrl + C ฉันลองเปิดพรอมต์พาวเวอร์เชลล์ / คำสั่งใหม่และพิมพ์สมุดบันทึก jupyter หยุดจากที่นั่น แต่ไม่ได้ผล
julianhatwell

24

ถ้าคุณเรียกใช้ jupyter ในพื้นหลังเหมือนฉัน:

jupyter notebook &> /dev/null &

จากนั้นในการออกจาก jupyter โดยสมบูรณ์แทนที่จะเป็น Ctl-C ให้สร้างคำสั่ง alias:

echo 'alias quitjupyter="kill $(pgrep jupyter)"' >> ~/.bashrc

รีสตาร์ทเทอร์มินัลของคุณ ฆ่าอินสแตนซ์ jupyter ทั้งหมด:

quitjupyter

หมายเหตุ: ใช้เครื่องหมายคำพูดคู่ภายในเครื่องหมายคำพูดเดี่ยวตามที่แสดงด้านบน ในทางกลับกันจะประเมินนิพจน์ก่อนที่จะเขียนลงใน. bashrc ของคุณ (คุณต้องการเขียนคำสั่งไม่ใช่ 'kill 1430' หรือหมายเลขกระบวนการใด ๆ ที่อาจเชื่อมโยงกับอินสแตนซ์ jupyter ปัจจุบัน) แน่นอนคุณสามารถใช้นามแฝงที่คุณต้องการได้ ฉันใช้ 'qjup' จริง:

echo 'alias qjup="kill $(pgrep jupyter)"' >> ~/.bashrc

รีสตาร์ทเทอร์มินัลของคุณ ฆ่าอินสแตนซ์ jupyter ทั้งหมด:

qjup

kill $(pgrep jupyter)ด้วยตัวเองเป็นอย่างดี ฉันกำลังเรียกใช้jupyter notebookจากเทอร์มินัลระยะไกลที่ขัดข้อง - วิธี CTRL + C นั้นเป็นไปไม่ได้เลยเมื่อกลับเข้าสู่ระบบการบันทึกตัวเลือกนิวเคลียร์ของการรีสตาร์ทรีโมตนี่เป็นสิ่งที่ดีมาก
MichaelChirico

2
ทำไมไม่เพียงpkill jupyter? pkillเป็นpgrebแต่สำหรับกระบวนการฆ่า
rmstmppr

21

ฉันคิดว่าคำตอบที่ได้รับการยอมรับล้าสมัยและใช้ไม่ได้อีกต่อไป

คุณสามารถยกเลิกสมุดบันทึก jupyter จากเว็บอินเตอร์เฟสในรายการเมนูไฟล์

ใส่คำอธิบายภาพที่นี่

เมื่อคุณเลื่อนเคอร์เซอร์ของเมาส์ไปที่ "ปิดและหยุด" คุณจะเห็นคำอธิบายต่อไปนี้

ใส่คำอธิบายภาพที่นี่

และเมื่อคุณคลิก "ปิดและหยุด" คุณจะเห็นข้อความต่อไปนี้บนหน้าจอเทอร์มินัล

ใส่คำอธิบายภาพที่นี่


15
เพื่อชี้แจงสิ่งนี้จะหยุดเคอร์เนลซึ่งเป็นกระบวนการที่รันโค้ด Python ของคุณ มันไม่ได้หยุดเซิร์ฟเวอร์โน้ตบุ๊กซึ่งทำให้อินเทอร์เฟซโน้ตบุ๊กเกี่ยวข้องกับการโหลดและบันทึกไฟล์ ฯลฯ
Thomas K

10

ขั้นตอนแรกคือการบันทึกสมุดบันทึกที่เปิดอยู่ทั้งหมด จากนั้นคิดเกี่ยวกับการปิดเครื่อง Jupyter Notebook ที่กำลังทำงานอยู่ คุณสามารถใช้คำสั่งง่ายๆนี้:

$ jupyter notebook stop 
Shutting down server on port 8888 ...

ซึ่งใช้หมายเลขพอร์ตเป็นอาร์กิวเมนต์และคุณสามารถปิดสมุดบันทึก jupyter ได้อย่างสวยงาม

เช่น:

jupyter notebook stop 8889 
Shutting down server on port 8889 ...

นอกจากนี้หากต้องการทราบว่าอินสแตนซ์ juypter ปัจจุบันของคุณกำลังทำงานอยู่ให้ตรวจสอบคำสั่งด้านล่าง:

shell> juypter notebook list 
Currently running servers:
http://localhost:8888/?token=ef12021898c435f865ec706d7c9af8607a7ba58bbee98632 :: /Users/username/jupyter-notebooks [/code]

7

คำสั่งเหล่านี้ใช้ได้ผลสำหรับฉัน:

jupyter notebook list # shows the running notebooks and their port-numbers
                      # (for instance: 8080)
lsof -n -i4TCP:[port-number] # shows PID.
kill -9 [PID] # kill the process.

คำตอบนี้ดัดแปลงมาจากที่นี่


5

ลองฆ่ากระบวนการ pythonw จากตัวจัดการงาน (ถ้าเป็น Windows) หากไม่มีอะไรทำงาน


4
Linux (Ubuntu 14.04)

ดังที่ได้กล่าวไว้ให้พยายามฆ่ากระบวนการโน้ตบุ๊ก ipython อย่างถูกต้องโดยไปที่แท็บ "running" ในเซสชันเบราว์เซอร์ ipynb / jupyter ก่อนจากนั้นตรวจสอบเทอร์มินัลที่เปิดอยู่บนคอนโซลของคุณและปิดด้วย ctrl-c อย่างหลังควรหลีกเลี่ยงถ้าเป็นไปได้

หากคุณเรียกใช้ipython notebook listและยังคงเห็นการรันเซิร์ฟเวอร์ ipython ที่พอร์ตต่างๆให้จดบันทึกว่าพอร์ตใดที่โน้ตบุ๊กที่มีอยู่จะถูกส่งไปยัง จากนั้นปิดพอร์ต TCP ของคุณ:

fuser -k 'port#'/tcp 

ฉันไม่แน่ใจว่ามีความเสี่ยงอื่น ๆ ที่เกี่ยวข้องกับการทำเช่นนี้หรือไม่ ถ้าเป็นเช่นนั้นแจ้งให้เราทราบ


2

สิ่งแวดล้อม


ระบบปฏิบัติการของฉันคือ Ubuntu 16.04 และ jupyter คือ 4.3.0

วิธี


ขั้นแรกฉันออกจากระบบ jupyter ที่หน้าแรกบนเบราว์เซอร์ (ปุ่มออกจากระบบอยู่ที่ด้านบนขวา)

ประการที่สองพิมพ์ในCtrl + Cเทอร์มินัลของคุณและจะแสดง:

[I 15: 59: 48.407 NotebookApp] ขัดจังหวะการให้บริการสมุดบันทึกจากไดเร็กทอรีภายใน: / home / Username 0 เคอร์เนลที่ใช้งานอยู่

Jupyter Notebook กำลังทำงานที่: http: // localhost: 8888 /? token = a572c743dfb73eee28538f9a181bf4d9ad412b19fbb96c82

ปิดเซิร์ฟเวอร์โน้ตบุ๊กนี้ (y / [n]) หรือไม่

ขั้นตอนสุดท้ายพิมพ์yภายใน 5 วินาทีและหากแสดง:

[C 15: 59: 50.407 NotebookApp] ยืนยันการปิดเครื่องแล้ว
[I 15: 59: 50.408 NotebookApp] กำลังปิดเมล็ด

ยินดีด้วย! คุณปิด jupyter ของคุณสำเร็จ


2

ที่จริงฉันเชื่อว่ามีวิธีที่สะอาดกว่าการฆ่ากระบวนการโดยใช้ kill หรือ task manager

ใน Jupyter Notebook Dashboard (อินเทอร์เฟซของเบราว์เซอร์ที่คุณเห็นเมื่อคุณเปิดตัว 'jupyter notebook' เป็นครั้งแรก) เรียกดูตำแหน่งของไฟล์สมุดบันทึกที่คุณปิดไว้ในเบราว์เซอร์ แต่เคอร์เนลที่อาจยังทำงานอยู่

ไฟล์ iPython Notebook จะปรากฏพร้อมกับไอคอนหนังสือแสดงเป็นสีเขียวหากมีเคอร์เนลที่กำลังทำงานอยู่หรือเป็นสีเทาหากเคอร์เนลไม่ทำงาน

เพียงแค่เลือกกล่องกาเครื่องหมายถัดจากไฟล์ที่กำลังทำงานอยู่จากนั้นคลิกที่ปุ่มปิดเครื่องที่ปรากฏด้านบน

การดำเนินการนี้จะปิดเคอร์เนลที่เชื่อมโยงกับโน้ตบุ๊กนั้นอย่างเหมาะสม



0

ฉันคัดลอกการวางจากเอกสารคู่มือเริ่มต้นใช้งานฉบับย่อของโน้ตบุ๊ค Jupyter / IPython เผยแพร่เมื่อ 13 ก.พ. 2018 http://jupyter-notebook-beginner-guide.readthedocs.io/en/latest/execute.html

1.3.3 ปิดโน้ตบุ๊ก: ปิดเคอร์เนลเมื่อเปิดโน้ตบุ๊ก "กลไกการคำนวณ" (เรียกว่าเคอร์เนล) จะเริ่มทำงานโดยอัตโนมัติ การปิดแท็บเบราว์เซอร์โน้ตบุ๊กจะไม่ปิดเคอร์เนล แต่เคอร์เนลจะทำงานต่อไปจนกว่าจะปิดลงอย่างชัดเจน ในการปิดเคอร์เนลให้ไปที่สมุดบันทึกที่เกี่ยวข้องและคลิกที่เมนูไฟล์ -> ปิดและหยุด หรืออีกวิธีหนึ่งคือ Notebook Dashboard มีแท็บชื่อ Running ซึ่งจะแสดงสมุดบันทึกที่กำลังทำงานอยู่ทั้งหมด (เช่นเคอร์เนล) และอนุญาตให้ปิดเครื่องได้ (โดยคลิกที่ปุ่มปิดเครื่อง)

สรุป: ก่อนอื่นให้ปิดและหยุดการทำงานของโน้ตบุ๊ก

1.3.2 ปิดแอพ Jupyter Notebook การปิดเบราว์เซอร์ (หรือแท็บ) จะไม่ปิดแอพ Jupyter Notebook หากต้องการปิดเครื่องโดยสมบูรณ์คุณต้องปิดเทอร์มินัลที่เกี่ยวข้อง ในรายละเอียดเพิ่มเติม Jupyter Notebook App เป็นเซิร์ฟเวอร์ที่ปรากฏในเบราว์เซอร์ของคุณตามที่อยู่เริ่มต้น ( http: // localhost: 8888 ) การปิดเบราว์เซอร์จะไม่ปิดเซิร์ฟเวอร์ คุณสามารถเปิดที่อยู่ก่อนหน้านี้อีกครั้งและแอพ Jupyter Notebook จะแสดงขึ้นมาอีกครั้ง คุณสามารถเรียกใช้แอพ Jupyter Notebook ได้หลายชุดและจะแสดงในที่อยู่ที่คล้ายกัน (เฉพาะตัวเลขหลัง“:” ซึ่งเป็นพอร์ตเท่านั้นที่จะเพิ่มขึ้นสำหรับสำเนาใหม่แต่ละชุด) เนื่องจากด้วยแอพ Jupyter Notebook เพียงแอพเดียวคุณจึงสามารถเปิดสมุดบันทึกจำนวนมากได้เราจึงไม่แนะนำให้เรียกใช้แอพ Jupyter Notebook หลายสำเนา

สรุป: ประการที่สองออกจากเทอร์มินัลที่คุณยิง Jupyter


0

ขั้นตอนที่ 1 - บนเชลล์เพียงแค่ทำการควบคุม + z (control + c) ขั้นตอนที่ 2 _ ปิดเว็บเบราว์เซอร์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.