kernel.ts 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. // Copyright (c) Jupyter Development Team.
  2. // Distributed under the terms of the Modified BSD License.
  3. import { KernelAPI, KernelManager, KernelMessage } from '@jupyterlab/services';
  4. import { log } from './log';
  5. export async function main() {
  6. // Start a python kernel
  7. let kernelManager = new KernelManager();
  8. let kernel = await kernelManager.startNew({ name: 'python' });
  9. // Register a callback for when the kernel changes state.
  10. kernel.statusChanged.connect((_, status) => {
  11. log(`Status: ${status}`);
  12. });
  13. log('Executing code');
  14. let future = kernel.requestExecute({ code: 'a = 1' });
  15. // Handle iopub messages
  16. future.onIOPub = msg => {
  17. if (msg.header.msg_type !== 'status') {
  18. log(msg.content);
  19. }
  20. };
  21. await future.done;
  22. log('Execution is done');
  23. log('Send an inspect message');
  24. let request: KernelMessage.IInspectRequestMsg['content'] = {
  25. code: 'hello',
  26. cursor_pos: 4,
  27. detail_level: 0
  28. };
  29. let inspectReply = await kernel.requestInspect(request);
  30. log('Looking at reply');
  31. if (inspectReply.content.status === 'ok') {
  32. log('Inspect reply:');
  33. log(inspectReply.content.data);
  34. }
  35. log('Interrupting the kernel');
  36. await kernel.interrupt();
  37. log('Send an completion message');
  38. let reply = await kernel.requestComplete({ code: 'impor', cursor_pos: 4 });
  39. if (reply.content.status === 'ok') {
  40. log(reply.content.matches);
  41. }
  42. log('Restarting kernel');
  43. await kernel.restart();
  44. log('Shutting down kernel');
  45. await kernel.shutdown();
  46. log('Finding all existing kernels');
  47. let kernelModels = await KernelAPI.listRunning();
  48. log(kernelModels);
  49. if (kernelModels.length > 0) {
  50. log(`Connecting to ${kernelModels[0].name}`);
  51. kernelManager.connectTo({ model: kernelModels[0] });
  52. }
  53. }