import std/parsecsv import std/threadpool import std/os {.experimental: "parallel".} ###Merge Them### proc mergeThem(postID: int) = var tagSpaced: string var uncleanTagged: CsvParser var curTagList: seq[string] uncleanTagged.open("post_ids_with_named_tags.csv") # while true: # try: # uncleanTagged.open("post_ids_with_named_tags.csv") # except CsvError as e: # echo e.msg # echo "failed on 17" # os.sleep(10000) uncleanTagged.readHeaderRow() while uncleanTagged.readRow(): if uncleanTagged.rowEntry("post_id") == $postID: try: curTagList.add(uncleanTagged.rowEntry("tag_name")) except: echo "fuck" if len(curTagList)-1 > 0: for tag in countup(0,len(curTagList)-1): tagSpaced = tagSpaced & " " & curTagList[tag] var tries = 0 while true and tries != 3: try: echo "Writing" & $tagSpaced & " to PostsWithTags/" & $postID writeFile("PostsWithTags/" & $postID, tagSpaced) break except: os.sleep(5000) tries = tries + 1 #tagSpaced = "" #curTagList = @[] uncleanTagged.close() #uncleanTagged.open("post_ids_with_named_tags.csv") parallel: for postID in 1..7000: spawn mergeThem(postID) if postID mod 100 == 0: sync()