I am trying to use multiprocessing to append to a csv file. I have multiple csv files that I am looping over. This function works with a normal for loop but does not work with multi-processing. Hope someone can shed some light on this.
My function code is as follows:
def read_write2(j, lock):
#i = 2
with open('C:\\Users\\user\\Documents\\filereader\\FileFolder\\sample_new{}.csv'.format(j), "r") as a_file: #input file
#i = i + 1
with open('samples2.csv','a') as file: #output file
for line in a_file:
lock.acquire()
stripped_line = line.strip()
a = len(stripped_line)
if "©" in stripped_line or "flow" in stripped_line or a>254:
pass
else:
file.write(stripped_line)
file.write("\n")
lock.release()
My multiprocessing code here is as follows:
if __name__ == "__main__":
lock = Lock()
processes = []
for i in range(2,fileno+1):
print(i)
process = Process(target=read_write2, args=(i,lock)) #creating a new process
processes.append(process) #appending process to a processes list
for process in processes:
print(process)
process.start()
for process in processes: #loop over list to join process
process.join() #process will finish before moving on with the script
Output is as follows:
7
2
3
4
5
6
7
<Process name='Process-1' parent=24328 initial>
<Process name='Process-2' parent=24328 initial>
<Process name='Process-3' parent=24328 initial>
<Process name='Process-4' parent=24328 initial>
<Process name='Process-5' parent=24328 initial>
<Process name='Process-6' parent=24328 initial>
7
7
7
7
7
7
Thank you.