JuliaLang/julia

`JULIA_NUM_THREADS` ignored when embedding Julia on a Windows system

Open

#55,468 创建于 2024年8月12日

在 GitHub 查看
 (1 评论) (0 反应) (0 负责人)Julia (5,773 fork)batch import
bughelp wantedsystem:windows

仓库指标

Star
 (48,709 star)
PR 合并指标
 (平均合并 20天 6小时) (30 天内合并 157 个 PR)

描述

The following c# code...

Environment.SetEnvironmentVariable("JULIA_NUM_THREADS", "4");
jl_init_with_image__threading(mBinPath, mSysImg);
jl_eval_string("println(\"Threads=$(Threads.nthreads())\")");
jl_eval_string("println(\"JULIA_NUM_THREADS=$(ENV[\"JULIA_NUM_THREADS\"])\")");

Produces the following output

Threads=1
JULIA_NUM_THREADS=4

In discussions with the Jeff and Keno it appears this happens in Windows because there are several environment stores in Windows, and the threads are created by reading with getenv (which access the machine level environment), while later in Julia the ENV is retrieved using getenvw (which access the process level environment).

贡献者指南