I'm new to multi-threading in Python and am currently writing a script that appends to a csv file. If I was to have multiple threads submitted to an concurrent.futures.ThreadPoolExecutor
that appends lines to a csv file. What could I do to guarantee thread safety if appending was the only file-related operation being done by these threads?
Simplified version of my code:
with concurrent.futures.ThreadPoolExecutor(max_workers=3) as executor:
for count,ad_id in enumerate(advertisers):
downloadFutures.append(executor.submit(downloadThread, arguments.....))
time.sleep(random.randint(1,3))
And my thread class being:
def downloadThread(arguments......):
#Some code.....
writer.writerow(re.split(',', line.decode()))
Should I set up a seperate single-threaded executor to handle writing or is it woth worrying about if I am just appending?
EDIT: I should elaborate that when the write operations occur can vary greatly with minutes between when the file is next appended to, I am just concerned that this scenario has not occurred when testing my script and I would prefer to be covered for that.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…