首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AttributeError:“Process”对象没有属性“”set_cpu_affinity“”

AttributeError:“Process”对象没有属性“”set_cpu_affinity“”
EN

Stack Overflow用户
提问于 2018-03-20 01:48:37
回答 1查看 1.4K关注 0票数 1

我正在运行joblib,并且遇到了与here相同的问题,它只使用了8个内核中的2个。我尝试按照here的描述来设置CPU亲和性。我使用的是psutil版本5.4.3。我仍然会遇到这个错误:

代码语言:javascript
复制
AttributeError: 'Process' object has no attribute 'set_cpu_affinity'

这是我的脚本:

代码语言:javascript
复制
from datetime import datetime
from subprocess import call 
from joblib import Parallel, delayed
import multiprocessing
import psutil
import os

startTime = datetime.now()

pdb_name_list = []
for filename in os.listdir('/home/labusr/Documents/python_scripts/Spyder/Refinement'):
   if filename.endswith(".pdb"):     
       pdb_name_list.append(filename)

num_cores = multiprocessing.cpu_count()
p = psutil.Process(os.getpid())
p.set_cpu_affinity(range(num_cores))
print(p.get_cpu_affinity())

inputs = range(2) 

def strcuture_refine(file_name,i):
    print('Refining strcuture %s round %s......\n' %(file_name, i))
    call(['/home/labusr/rosetta/main/source/bin/rosetta_scripts.linuxgccrelease',
          '-in::file::s', '/home/labusr/Documents/python_scripts/Spyder/_Refinement/%s' %file_name,
          '-parser::protocol', '/home/labusr/Documents/A_asymm_refine.xml',
          '-parser::script_vars', 'denswt=35', 'rms=1.5', 'reso=4.3', 'map=/home/labusr/Documents/tubulin_exercise/masked_map_center.mrc', 
          'testmap=/home/labusr/Documents/tubulin_exercise/mmasked_map_top_centered_resampled.mrc',
          '-in:ignore_unrecognized_res',
          '-edensity::mapreso', '4.3',
          '-default_max_cycles', '200',
          '-edensity::cryoem_scatterers',
          '-beta',
          '-out::suffix', '_%s' %i,
          '-crystal_refine'])
    print('Time for refining %s round %s is: \n' %(file_name, i), datetime.now() - startTime)

for file_name in pdb_name_list:
    Parallel(n_jobs=num_cores)(delayed(strcuture_refine)(file_name,i) for i in inputs)
EN

回答 1

Stack Overflow用户

发布于 2018-10-09 05:09:21

函数set_cpu_affinity()现在已弃用。

相反,函数cpu_affinity()同时充当getter和setter。如果你不提供参数,它将返回当前的亲和性,如果你提供和参数,它将设置它。

例如:

代码语言:javascript
复制
$ pid.cpu_affinity() 
[0,1,2,3,4,5,6,7]

$ pid.cpu_affinity([0,1])

$ pid.cpu_affinity()
[0,1]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49369336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档