Python 如何使用并行处理多次调用同一函数?

Python 如何使用并行处理多次调用同一函数?,python,python-multiprocessing,Python,Python Multiprocessing,如何使这项任务更快地完成?从_file()生成_ngrams_的3个调用可以并行完成吗?只是进入python,不知道如何让它更快。我认为多处理或线程应该做这项工作,但不知道如何做。这看起来像是一个典型的任务,可以同时在我的Mac电脑上使用多个内核 def tokenize(text): return [token for token in text.split(' ')] def generate_ngrams(text, n): tokens = tokenize(text)

如何使这项任务更快地完成?从_file()生成_ngrams_的3个调用可以并行完成吗?只是进入python,不知道如何让它更快。我认为多处理或线程应该做这项工作,但不知道如何做。这看起来像是一个典型的任务,可以同时在我的Mac电脑上使用多个内核

def tokenize(text):
   return [token for token in text.split(' ')]

def generate_ngrams(text, n):

    tokens = tokenize(text)

    ngrams = zip(*[tokens[i:] for i in range(n)])

    return [''.join(ngram) for ngram in ngrams]

def generate_ngrams_from_file(input, out, n):
    count = 0
    with open(input, 'r') as f:
        for line in f:
            count += 1
            if line:
                ngrams = generate_ngrams(line, n)
                if n == 2:
                    bigrams.update(ngrams)
                elif n == 3:
                    trigrams.update(ngrams)
                elif n == 4:
                    fourgrams.update(ngrams)
                elif n == 5:
                    fourgrams.update(ngrams)

    print("Ngram done!")

if __name__ == "__main__":
    start = time.time()

    input_file = 'bigfile.txt'
    output_3_tram = '3gram.txt'
    output_4_tram = '4ngram.txt'
    output_5_tram = '5ngram.txt'

    print('Generate trigram: ')
    generate_ngrams_from_file(input_file, output_3_tram, 3)

    print("Generate fourgrams: ")
    generate_ngrams_from_file(input_file, output_4_tram, 4)

    print("Generate fivegrams: ")
    generate_ngrams_from_file(input_file, output_5_tram, 5)

    end = time.time()
    mytime(start, end)

Python中的多线程不是一个好主意,因为Python具有全局解释器锁特性。你可以在这里读到。多处理是使程序更快的更好选择。您可以将
generate\u ngrams()
函数放在
多处理
模块的
进程
类中。阅读有关
过程的信息
课程<建议使用代码>进程类,因为它比
pool.apply()
pool.apply\u async()

都快。这是否回答了您的问题?这是一个典型的例子,甚至