Linked Questions

Popular Questions

Parallel Program in Python produces no output

Asked by At

I have a simple task. A particular function needs to be run for a large number of files. This task can be easily parallelized.

Here is the working code:

# filelist is the directory containing two file, a.txt and b.txt.
# a.txt is the first file, b.xt is the second file
# I pass a file that lits the names of the two files to the main program

from concurrent.futures import ProcessPoolExecutor, as_completed
from pathlib import Path
import sys

def translate(filename):
    print(filename)
    f = open(filename, "r")
    g = open(filename + ".x", , "w")
    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():
            executor.submit(translate, "filelist/" + filename)
        for future in as_completed(futures):
            future.result()

if __name__ == "__main__":
     main(sys.argv[1])

However, no new files are created, i.e. the folder doesn't contain the a.txt.x and b.txt.x files.

What is wrong with the above code and how can i make it work?

Thanks.

Related Questions