跳转至

Limit the number of threads used by immunarch (DuckDB)

What is happening under the hood?

immunarch uses immundata, which uses duckplyr, which runs queries in DuckDB. It is quite a journey from the data to your plots.

DuckDB can use many CPU cores by default to run faster, but sometimes you want to limit this.

Why limit threads?

  • On shared machines (servers, CI), many threads can slow down other users.
  • In tutorials, fewer threads make examples more predictable and easier to reproduce.
  • Lower threads = lower CPU load (but slower queries).

How to limit the number of threads

Put this near the start of your tutorial/script:

# Limit the number of CPU threads used by DuckDB in this R session
duckplyr::db_exec("SET threads TO 1")

Change later (example: use 4 threads) or reset to default:

duckplyr::db_exec("SET threads TO 4")   # use 4 threads
# or, if supported in your environment:
duckplyr::db_exec("RESET threads")      # back to DuckDB default

References

  • duckplyr - dplyr powered by DuckDB: https://duckplyr.tidyverse.org (CRAN: duckplyr).

  • db_exec - https://duckplyr.tidyverse.org/reference/db_exec.html

  • DuckDB configuration docs - thread/memory settings and more: https://duckdb.org/docs/stable/configuration/overview.html