在多线程池中使用迭代器

时间:2019-01-04 22:07:24

标签: python-3.x multithreading iterator

我想在写入文本文件时使用多线程来提高使用迭代器的效率。

此处显示了不使用多线程的解决方案:

import itertools
Dictionary_file = open("C:\\Users\\user\\Desktop\\\Dictionary.txt", 'r')
File_of_combinations = open("C:\\Users\\user\\Desktop\\File_of_combinations", 'w')
dictionary = []
for word in Dictionary_file:
    dictionary.append(word.strip())


for x in (itertools.permutations(dictionary, r=3)):
    File2.write(' '.join(x) + '\n')
File2.close()

(获取一个字典.txt文件,并将每3个字的组合写入另一个.txt文件中)

from multiprocessing import Pool
import itertools
Dictionary = open("C:\\Users\\user\\Desktop\\Dictionary.txt", 'r')
File_of_combinations = 
open("C:\\Users\\user\\Desktop\\File_of_combinations.txt", 'w')
dictionary = []
for word in Dictionary:
    dictionary.append(word.strip())

def record_combination(itertools):
    for x in itertools:
        File_of_combinations.write(' '.join(x) + '\n')
    File2.close()


pool = Pool()
pool.map(record_combination,(itertools.permutations(dictionary, r=3))) 

我认为正在发生的事情是record_combination方法将迭代器作为参数传递给了它,但是,与我的第一个示例不同,它利用了所有处理器。

接受,第二个示例不起作用。为什么会这样?

任何帮助将不胜感激

0 个答案:

没有答案