Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用多线程优化Python?_Python_Multithreading_For Loop_Optimization_Parallel Processing - Fatal编程技术网

用多线程优化Python?

用多线程优化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

如果我在错误的论坛上发布了这篇文章,我很抱歉,但是有没有办法通过多线程、进程或其他改进来提高代码的运行速度

此脚本的目的是根据您键入的单词查找拼字游戏中所有可能的单词,并计算其拼字分数

当我输入一个超过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, "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())