我正在使用 ray 实现 SEED,因此,我定义了一个类,如下所示Worker
import numpy as np
import gym
class Worker:
def __init__(self, worker_id, env_name, n):
import os
os.environ['OPENBLAS_NUM_THREADS'] = '1'
self._id = worker_id
self._n_envs = n
self._envs = [gym.make(env_name)
for _ in range(self._n_envs)]
def reset_env(self, env_id):
return self._envs[env_id].reset()
def env_step(self, env_id, action):
return self._envs[env_id].step(action)
除此之外,还有一个循环,在必要时调用方法以与环境交互。LeanerWorker
如本文档所示,我想确保每个工作线程只使用一个 CPU 资源。以下是我的一些尝试:
创建时,我设置:workernum_cpus=1worker=ray.remote(num_cpus=1)(Worker).remote(...)
我检查了我的numpy配置,它给了我以下信息np.__config__.show()
blas_mkl_info:不可用
blis_info: 不可用
openblas_info:库 = [“开放刀片”、“开放刀片”] library_dirs = [/usr/本地/库“ ] 语言 = c define_macros = [(”HAVE_CBLAS“,无)]
blas_opt_info:库 = [“开放”,“开放刀片”] library_dirs = [/usr/本地/lib“] 语言 = c define_macros = [(”HAVE_CBLAS“,无)]
lapack_mkl_info:不可用
openblas_lapack_info:库 = [“开放刀片”、“开放刀片”] library_dirs = [/usr/本地/库] 语言 = c define_macros = [(“HAVE_CBLAS”,无)]
lapack_opt_info:库 = [“开放”,“开放刀片”] library_dirs = [“/usr/本地/库”] 语言 = c define_macros = [(“HAVE_CBLAS”,无)]
我注意到麻痹正在使用OpenBLAS,所以我在类中设置了上面的代码按照这个指令。os.environ['OPENBLAS_NUM_THREADS'] = '1'Worker
两者都完成后,我打开了顶部,但仍然注意到每个Worker都使用CPU,与以前完全相同。我也尝试过在主python脚本的开头设置或使用,但没有任何帮助。我现在该怎么办?130%-180%os.environ['OPENBLAS_NUM_THREADS'] = '1'export OPENBLAS_NUM_THREADS=1
宝慕林4294392
慕容森
随时随地看视频慕课网APP
相关分类