用多线程优化Python?
如果我在错误的论坛上发布了这篇文章,我很抱歉,但是有没有办法通过多线程、进程或其他改进来提高代码的运行速度 此脚本的目的是根据您键入的单词查找拼字游戏中所有可能的单词,并计算其拼字分数 当我输入一个超过7个字符的单词时,计算将花费很长时间用多线程优化Python?,python,multithreading,for-loop,optimization,parallel-processing,Python,Multithreading,For Loop,Optimization,Parallel Processing,如果我在错误的论坛上发布了这篇文章,我很抱歉,但是有没有办法通过多线程、进程或其他改进来提高代码的运行速度 此脚本的目的是根据您键入的单词查找拼字游戏中所有可能的单词,并计算其拼字分数 当我输入一个超过7个字符的单词时,计算将花费很长时间 scores = {"a": 1, "c": 3, "b": 3, "e": 1, "d": 2, "g": 2, "f": 4, "i": 1, "h": 4, "k": 5, "j": 8, "m": 3, "l": 1, "o": 1
scores = {"a": 1, "c": 3, "b": 3, "e": 1, "d": 2, "g": 2,
"f": 4, "i": 1, "h": 4, "k": 5, "j": 8, "m": 3,
"l": 1, "o": 1, "n": 1, "q": 10, "p": 3, "s": 1,
"r": 1, "u": 1, "t": 1, "w": 4, "v": 4, "y": 4,
"x": 8, "z": 10}
WORDS = []
combs = dict()
def prepareDict(file):
try:
f = open(file, 'r')
for line in f:
WORDS.append(line.rstrip().lower())
except OpenErrors:
print("Could not open file")
finally:
f.close()
def combinations(word):
for i in range(len(word)+1):
combList = itertools.permutations(word, i)
for item in combList:
item = ''.join(item)
if item in WORDS:
value = 0
for c in item:
value += int(scores.get(c))
combs[item] = value
return (combs)
if __name__ == "__main__":
prepareDict('sowpods.txt')
if len(sys.argv) > 2 or len(sys.argv) < 2:
print("usage: %s <word>" % sys.argv[0])
sys.exit(1)
else:
word = sys.argv[1].lower()
combs = combinations(word)
sorted_combs = sorted(combs.items(), key=operator.itemgetter(1), reverse=True)
for word in sorted_combs:
print(word)
得分={“a”:1,“c”:3,“b”:3,“e”:1,“d”:2,“g”:2,
“f”:4,“i”:1,“h”:4,“k”:5,“j”:8,“m”:3,
“l”:1,“o”:1,“n”:1,“q”:10,“p”:3,“s”:1,
“r”:1,“u”:1,“t”:1,“w”:4,“v”:4,“y”:4,
“x”:8,“z”:10}
单词=[]
combs=dict()
def准备法令(文件):
尝试:
f=打开(文件“r”)
对于f中的行:
WORDS.append(line.rstrip().lower())
除开头错误外:
打印(“无法打开文件”)
最后:
f、 关闭()
def组合(单词):
对于范围内的i(len(word)+1):
combList=itertools.排列(单词,i)
对于列表中的项目:
项目=“”。加入(项目)
若项目为大写:
值=0
对于项目中的c:
值+=int(分数。获取(c))
梳子[项目]=价值
返回(梳)
如果名称=“\uuuuu main\uuuuuuuu”:
prepareDict('sowpods.txt')
如果len(sys.argv)>2或len(sys.argv)<2:
打印(“用法:%s”%sys.argv[0])
系统出口(1)
其他:
word=sys.argv[1].lower()
梳子=组合(单词)
sorted_combs=sorted(combs.items(),key=operator.itemgetter(1),reverse=True)
对于已排序梳中的单词:
打印(word)
将单词=[]
更改为集合()
:
然后更改方法以向其中添加单词:
发件人:
致:
没有理由为此使用列表。这将提高性能 哇,谢谢。这确实提高了性能!非常感谢。
WORDS = set()
WORDS.append(line.rstrip().lower())
WORDS.add(line.rstrip().lower())