Как возвращать данные из потоков?
Есть файл около 80 тыс. строчек. Мне построчно нужно обработать их и каждую из них занести в датасет. Для ускорения работы я создаю потоки, но не знаю как можно реализовать возврат данных оттуда. Пробовал переменную делать глобальной, но это не сработало. Я знаю, что можно попробовать возвращать их через очереди, но не знаю как это сделать
import pandas as pd
import threading
import queue
def read_line(my_df, line):
separators = ['"', ' ', '[', ']']
curretnSep = ''
resultList = []
newString = ''
for s in line:
if s in separators:
if curretnSep == '':
curretnSep = s
if newString != '': resultList.append(newString)
newString = ''
elif curretnSep == s or curretnSep == '[' and s == ']':
curretnSep = ''
if newString != '': resultList.append(newString)
newString = ''
elif curretnSep == ' ':
curretnSep = s
elif (curretnSep == '"' or curretnSep == '[') and s == ' ':
newString += s
else:
newString += s
print(resultList)
if len(resultList) != 0:
newline = {'%h': resultList[0], '%l': resultList[1], '%u': resultList[2], '%t': resultList[3],
'%r': resultList[4], '%>s': resultList[5], '%b': resultList[6], '%{Referr}i': resultList[7],
'%{Useragent}i': resultList[8]}
my_df = my_df.append(newline, ignore_index=True)
global my_df
col_names = ['%h', '%l', '%u', '%t', '%r', '%>s', '%b', '%{Referr}i', '%{Useragent}i']
my_df = pd.DataFrame(columns=col_names)
threads = []
k = 0
with open("1.txt") as infile:
for line in infile:
if k < 400:
t = threading.Thread(target=read_line, args=(my_df, line,))
t.start()
threads.append(t)
else:
for thread in threads:
thread.join()
threads = []
my_df.to_csv('file1.csv', header=True, sep=';')