伙计们我想要检索一个流程'使用子进程的亲缘关系列表。
try:
pid = 1500
x = subprocess.check_output(['taskset','-c','-p', str(pid)])
except Exception as inst:
print inst
但是,这会产生以下输出:
pid 1500's correct affinity list: 0-3
如何直接将0-3值作为字符串获取?只能有整数或0-3之类的值。基本上我是想在冒号之后得到什么:'。'。
提前致谢。
答案 0 :(得分:1)
只需在:
上拆分输出,然后使用索引1获取0-3
。之后,您可以随心所欲地做任何事情。像这样:
try:
pid = 1500
x = subprocess.check_output(['taskset','-c','-p', str(pid)])
affinity_list = [affinity for affinity in x.split(':')[1].split('-')]
except Exception as inst:
print inst
这将产生:
affinity_list = [0, 3]
如果您想将0-3
解释为范围,可以执行以下操作:
affinity_list = range(affinity_list[0], affinity_list[-1] + 1)
答案 1 :(得分:1)
你可以做类似print(str(inst).split(':')[1]
的东西,它获取inst的字符串表示,用删除器“:”将它分成一个数组,然后取这个数组的第二个值(在你的例子中,它会是0-3
)
答案 2 :(得分:1)
嗯,split()
非常适合您的情况,但如果您想使用regex
,您可以执行以下操作:
>>> import re
>>> x = "pid 1500's correct affinity list: 0-3"
>>> y = re.search(':.*$',x).group()[1:]
>>> y
' 0-3'
但是,你真的不需要regex
来完成这项任务。