0

我正在尝试编写一个简单的脚本,使游戏在单个处理器内核上运行,因为我听说它不适用于多核处理器。这个脚本选择一个随机内核并启动游戏,我喜欢它告诉我哪个内核它的启动。Rcore 从核心中选择一个随机整数并将其用作系统命令来启动游戏。dere 是将“二进制”翻译回人类语言的字典。前任

core1 = 1
core2 = 2
core3 = 4
core4 = 8

我想在开始游戏之前打印它在命令提示符中选择的核心,我不知道该怎么做。

from os import system as sysc
import random
cores = [1,2,4,8]
rcore = int(random.choice(cores))
data = "\"C:\Windows\System32\cmd.exe /k start \"\" /affinity %s \"C:\Program Files     (x86)\Steam\SteamApps\common\Kerbal Space Program\KSP.exe\"" %rcore
decore ={ 1:'1',2 :'2',4 :'3',8:'4'}

print 'Launching KSP on processor core:%s'
sysc('%s'%(data))

这是我尝试过的

>>> for rcore in decore:
...     print rcore
8
1
2
4

..不是我想要的结果。有没有一种简单、神奇的方法来做到这一点?该脚本确实有效,效果很好..它只是不显示我想要的。

4

4 回答 4

2

要回答您的具体问题,您想使用decore[rcore]从字典核心中读取 rcore 的值。

但是,正如已经向您建议的那样,使用处理器亲和性可能不是您前进的最佳方式。这是因为您看到的不是处理器,而是内核,并且内核之间的任务迁移不会因缓存未命中而对您的应用程序造成太大伤害。另一方面,处理器亲和性可能会阻止更快地调度您的进程,从而降低性能。

于 2013-09-12T20:34:15.193 回答
0

我不完全确定,因为这个问题有点不清楚 IMO,但我认为你正在寻找

decore={1:'1',2 :'2',4 :'3',8:'4'}

for rcore in decore.values():
    print rcore

这应该给

4
1
2
3

decore.keys() 给出一个列表 [1,2,4,8],而 decore.values() 给出一个列表 ['1','2','3','4']。

此外, decore[rcore] 将为您提供具有该核心值的字符串,可以像这样显示:

print 'Launching KSP on processor core:%s' % decore[rcore]
sysc(data)
于 2013-09-12T20:40:22.720 回答
0
>>> for rcore in decore:
...     print decore[rcore]
于 2013-09-12T20:36:05.760 回答
0

以及对您之前所做工作的简单扩展:

对于核心中的核心:打印核心[核心]

1 2 3

于 2013-09-12T20:37:31.800 回答