From b25361ef336caf89d5696d9eabe2c85e477f95e0 Mon Sep 17 00:00:00 2001 From: M Bussonnier Date: Thu, 30 Jan 2025 11:55:11 +0100 Subject: [PATCH] pre-install packages concurently I think that instead of doing N requests of await piplite.install, we can do one request with all the required packages. This seem to only affect 6 packages when adding logging: - ssl - sqlite3 - ipykernel - comm - pyodide_kernel - ipython I'm assuming it won't make that much of a difference. --- packages/pyodide-kernel/src/worker.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/pyodide-kernel/src/worker.ts b/packages/pyodide-kernel/src/worker.ts index 6b6c2208..7a8c6016 100644 --- a/packages/pyodide-kernel/src/worker.ts +++ b/packages/pyodide-kernel/src/worker.ts @@ -97,10 +97,10 @@ export class PyodideRemoteKernel { const scriptLines: string[] = []; // use piplite for packages that weren't pre-loaded - for (const pkgName of toLoad) { - if (!preloaded.includes(pkgName)) { - scriptLines.push(`await piplite.install('${pkgName}', keep_going=True)`); - } + const packagesToInstall = toLoad.filter((pkgName) => !preloaded.includes(pkgName)); + if (packagesToInstall.length > 0) { + const pack_list = JSON.stringify(packagesToInstall); + scriptLines.push(`await piplite.install(${pack_list}, keep_going=True)`); } // import the kernel