Это должно привести вас на правильный путь.Если это не работает и не является очевидной ошибкой, то я подозреваю, что у вас не все пути к файлам правильные ... Я должен отметить, что написание файлов выиграет больше от потоков, чем от процессов с уменьшенными накладными расходами.Файловый ввод / вывод должен освобождать GIL, так что вы получите выгоду от ускорения (значительно больше, если вы копируете более одной строки за раз.) При этом, если вы просто копируете файлы, вам действительно нужно просто использовать shutil.copy
или shutil.copy2
from concurrent.futures import ProcessPoolExecutor, wait
from pathlib import Path
import sys
def translate(filename):
print(filename)
with open(filename, "r") as f, open(filename + ".x", , "w") as g:
for line in f:
g.write(line)
def main(path_to_file_with_list):
futures = []
with ProcessPoolExecutor(max_workers=8) as executor:
for filename in Path(path_to_file_with_list).open():
futures.append(executor.submit(translate, "filelist/" + filename))
wait(futures) #simplify waiting on processes if you don't need the result.
for future in futures:
if future.excpetion() is not None:
raise future.exception() #ProcessPoolEcecutors swallow exceptions without telling you...
print("done")
if __name__ == "__main__":
main(sys.argv[1])