Я хочу использовать многопоточность для повышения эффективности работы с итератором при записи в текстовый файл.
Здесь показано решение, которое не использует многопоточность:
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 и записывает каждую комбинацию из трех слов в другой файл .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 итератор передается в качестве параметра, но вместо моего первого примера используются все процессоры.
принять, второй пример не работает. Почему это?
Любая помощь будет оценена