我在以更 Pythonic 的方式重写长度 Python 代码时遇到了麻烦。这是我尝试过的,它还包含一个示例,我希望我的最终代码看起来像
#!/usr/bin/env python
import time
import itertools
import os
freq = [2400000,2000000,1600000,1200000,800000]
freq_set = [
[ i for i in itertools.combinations(freq,1)],
[ i for i in itertools.combinations(freq,2)],
[ i for i in itertools.combinations(freq,3)],
[ i for i in itertools.combinations(freq,4)]
]
cores = [[0,4],[1,5],[2,6],[3,7]]
sets = [[0,4],[0,4,1,5],[0,4,1,5,2,6],[0,4,1,5,2,6,3,7]]
# 5 10 10 5 ; 1 3 5 7
for freq_set_val in range(0, len(freq_set)):
if freq_set_val == 0:
change = "echo "+ freq_set[freq_set_val][0] +"> /sys/devices/system/cpu/cpu"+ sets[freq_set_val][0] + "/cpufreq/scaling_setspeed"
change = "echo "+ freq_set[freq_set_val][0] +"> /sys/devices/system/cpu/cpu"+ sets[freq_set_val][1] + "/cpufreq/scaling_setspeed"
print "do something"
change = "echo "+ freq_set[freq_set_val][1] +"> /sys/devices/system/cpu/cpu"+ sets[freq_set_val][0] + "/cpufreq/scaling_setspeed"
change = "echo "+ freq_set[freq_set_val][1] +"> /sys/devices/system/cpu/cpu"+ sets[freq_set_val][1] + "/cpufreq/scaling_setspeed"
print "do something"
change = "echo "+ freq_set[freq_set_val][2] +"> /sys/devices/system/cpu/cpu"+ sets[freq_set_val][0] + "/cpufreq/scaling_setspeed"
change = "echo "+ freq_set[freq_set_val][2] +"> /sys/devices/system/cpu/cpu"+ sets[freq_set_val][1] + "/cpufreq/scaling_setspeed"
print "do something"
change = "echo "+ freq_set[freq_set_val][3] +"> /sys/devices/system/cpu/cpu"+ sets[freq_set_val][0] + "/cpufreq/scaling_setspeed"
change = "echo "+ freq_set[freq_set_val][3] +"> /sys/devices/system/cpu/cpu"+ sets[freq_set_val][1] + "/cpufreq/scaling_setspeed"
print "do something"
change = "echo "+ freq_set[freq_set_val][4] +"> /sys/devices/system/cpu/cpu"+ sets[freq_set_val][0] + "/cpufreq/scaling_setspeed"
change = "echo "+ freq_set[freq_set_val][4] +"> /sys/devices/system/cpu/cpu"+ sets[freq_set_val][1] + "/cpufreq/scaling_setspeed"
print "do something"
if freq_set_val == 1:
change = "echo "+ freq_set[freq_set_val][0] +"> /sys/devices/system/cpu/cpu"+ sets[freq_set_val][0] + "/cpufreq/scaling_setspeed"
change = "echo "+ freq_set[freq_set_val][0] +"> /sys/devices/system/cpu/cpu"+ sets[freq_set_val][1] + "/cpufreq/scaling_setspeed"
change = "echo "+ freq_set[freq_set_val][1] +"> /sys/devices/system/cpu/cpu"+ sets[freq_set_val][2] + "/cpufreq/scaling_setspeed"
change = "echo "+ freq_set[freq_set_val][1] +"> /sys/devices/system/cpu/cpu"+ sets[freq_set_val][3] + "/cpufreq/scaling_setspeed"
print "do something"
change = "echo "+ freq_set[freq_set_val][1] +"> /sys/devices/system/cpu/cpu"+ sets[freq_set_val][0] + "/cpufreq/scaling_setspeed"
change = "echo "+ freq_set[freq_set_val][1] +"> /sys/devices/system/cpu/cpu"+ sets[freq_set_val][1] + "/cpufreq/scaling_setspeed"
change = "echo "+ freq_set[freq_set_val][2] +"> /sys/devices/system/cpu/cpu"+ sets[freq_set_val][2] + "/cpufreq/scaling_setspeed"
change = "echo "+ freq_set[freq_set_val][2] +"> /sys/devices/system/cpu/cpu"+ sets[freq_set_val][3] + "/cpufreq/scaling_setspeed"
print "do something"
change = "echo "+ freq_set[freq_set_val][2] +"> /sys/devices/system/cpu/cpu"+ sets[freq_set_val][0] + "/cpufreq/scaling_setspeed"
change = "echo "+ freq_set[freq_set_val][2] +"> /sys/devices/system/cpu/cpu"+ sets[freq_set_val][1] + "/cpufreq/scaling_setspeed"
change = "echo "+ freq_set[freq_set_val][3] +"> /sys/devices/system/cpu/cpu"+ sets[freq_set_val][2] + "/cpufreq/scaling_setspeed"
change = "echo "+ freq_set[freq_set_val][3] +"> /sys/devices/system/cpu/cpu"+ sets[freq_set_val][3] + "/cpufreq/scaling_setspeed"
print "do something"
print "so onn"
if freq_set_val == 2:
change = "echo "+ freq_set[freq_set_val][0] +"> /sys/devices/system/cpu/cpu"+ sets[freq_set_val][0] + "/cpufreq/scaling_setspeed"
change = "echo "+ freq_set[freq_set_val][0] +"> /sys/devices/system/cpu/cpu"+ sets[freq_set_val][1] + "/cpufreq/scaling_setspeed"
change = "echo "+ freq_set[freq_set_val][1] +"> /sys/devices/system/cpu/cpu"+ sets[freq_set_val][2] + "/cpufreq/scaling_setspeed"
change = "echo "+ freq_set[freq_set_val][1] +"> /sys/devices/system/cpu/cpu"+ sets[freq_set_val][3] + "/cpufreq/scaling_setspeed"
change = "echo "+ freq_set[freq_set_val][2] +"> /sys/devices/system/cpu/cpu"+ sets[freq_set_val][4] + "/cpufreq/scaling_setspeed"
change = "echo "+ freq_set[freq_set_val][2] +"> /sys/devices/system/cpu/cpu"+ sets[freq_set_val][5] + "/cpufreq/scaling_setspeed"
print "do something"
本质上,我想继续翻转一组具有特定频率水平的内核。所以在每个change
声明之后。我会写os.system(change)
你能帮帮我吗?我也尝试使用 shell 实现相同的功能。但问题是没有itertools
包裹。请随时更改title of question
我不知道如何表达它。
这就是它现在的样子。更漂亮的版本总是更好:) 但我不知道如何增强它
for freq_set_val in range(0, len(freq_set)):
if freq_set_val == 0:
for freq in range(0, len(freq_set[freq_set_val])):
for val in range(0, len(freq_set[freq_set_val][freq])):
change = "echo "+ str(freq_set[freq_set_val][freq][val]) +"> /sys/devices/system/cpu/cpu"+ str(sets[freq_set_val][0]) + "/cpufreq/scaling_setspeed"
change = "echo "+ str(freq_set[freq_set_val][freq][val]) +"> /sys/devices/system/cpu/cpu"+ str(sets[freq_set_val][1]) + "/cpufreq/scaling_setspeed"
print "do something"
if freq_set_val == 1:
for freq in range(0, len(freq_set[freq_set_val])):
change = "echo "+ str(freq_set[freq_set_val][freq][0]) +"> /sys/devices/system/cpu/cpu"+ str(sets[freq_set_val][0]) + "/cpufreq/scaling_setspeed"
change = "echo "+ str(freq_set[freq_set_val][freq][0]) +"> /sys/devices/system/cpu/cpu"+ str(sets[freq_set_val][1]) + "/cpufreq/scaling_setspeed"
change = "echo "+ str(freq_set[freq_set_val][freq][1]) +"> /sys/devices/system/cpu/cpu"+ str(sets[freq_set_val][2]) + "/cpufreq/scaling_setspeed"
change = "echo "+ str(freq_set[freq_set_val][freq][1]) +"> /sys/devices/system/cpu/cpu"+ str(sets[freq_set_val][3]) + "/cpufreq/scaling_setspeed"
print "do something"
if freq_set_val == 2:
for freq in range(0, len(freq_set[freq_set_val])):
change = "echo "+ str(freq_set[freq_set_val][freq][0]) +"> /sys/devices/system/cpu/cpu"+ str(sets[freq_set_val][0]) + "/cpufreq/scaling_setspeed"
change = "echo "+ str(freq_set[freq_set_val][freq][0]) +"> /sys/devices/system/cpu/cpu"+ str(sets[freq_set_val][1]) + "/cpufreq/scaling_setspeed"
change = "echo "+ str(freq_set[freq_set_val][freq][1]) +"> /sys/devices/system/cpu/cpu"+ str(sets[freq_set_val][2]) + "/cpufreq/scaling_setspeed"
change = "echo "+ str(freq_set[freq_set_val][freq][1]) +"> /sys/devices/system/cpu/cpu"+ str(sets[freq_set_val][3]) + "/cpufreq/scaling_setspeed"
change = "echo "+ str(freq_set[freq_set_val][freq][2]) +"> /sys/devices/system/cpu/cpu"+ str(sets[freq_set_val][4]) + "/cpufreq/scaling_setspeed"
change = "echo "+ str(freq_set[freq_set_val][freq][2]) +"> /sys/devices/system/cpu/cpu"+ str(sets[freq_set_val][5]) + "/cpufreq/scaling_setspeed"
print "do something"
if freq_set_val == 3:
for freq in range(0, len(freq_set[freq_set_val])):
change = "echo "+ str(freq_set[freq_set_val][freq][0]) +"> /sys/devices/system/cpu/cpu"+ str(sets[freq_set_val][0]) + "/cpufreq/scaling_setspeed"
change = "echo "+ str(freq_set[freq_set_val][freq][0]) +"> /sys/devices/system/cpu/cpu"+ str(sets[freq_set_val][1]) + "/cpufreq/scaling_setspeed"
change = "echo "+ str(freq_set[freq_set_val][freq][1]) +"> /sys/devices/system/cpu/cpu"+ str(sets[freq_set_val][2]) + "/cpufreq/scaling_setspeed"
change = "echo "+ str(freq_set[freq_set_val][freq][1]) +"> /sys/devices/system/cpu/cpu"+ str(sets[freq_set_val][3]) + "/cpufreq/scaling_setspeed"
change = "echo "+ str(freq_set[freq_set_val][freq][2]) +"> /sys/devices/system/cpu/cpu"+ str(sets[freq_set_val][4]) + "/cpufreq/scaling_setspeed"
change = "echo "+ str(freq_set[freq_set_val][freq][2]) +"> /sys/devices/system/cpu/cpu"+ str(sets[freq_set_val][5]) + "/cpufreq/scaling_setspeed"
change = "echo "+ str(freq_set[freq_set_val][freq][3]) +"> /sys/devices/system/cpu/cpu"+ str(sets[freq_set_val][6]) + "/cpufreq/scaling_setspeed"
change = "echo "+ str(freq_set[freq_set_val][freq][3]) +"> /sys/devices/system/cpu/cpu"+ str(sets[freq_set_val][7]) + "/cpufreq/scaling_setspeed"
print "do something"