Итеративная запись в аварийную оболочку DataFrame в случайных точках - PullRequest
0 голосов
/ 21 ноября 2018

Справочная информация: следующий фрагмент кода просматривает отдельные текстовые сообщения потока файла резервной копии XML iOS, возвращая содержимое, время отправки / получения и направление каждого текстового сообщения от указанного контакта.

                else: # if no need to chunk
                    msg_count = len(top["dict"][i]["array"][2].getchildren()) # enumerate messages
                    for n in range(msg_count): # iterate through individual messages 
                        try:
                            time = str(top["dict"][i]["array"][2]["dict"][n]["date"][0]) # fetch time
                            msg = str(top["dict"][i]["array"][2]["dict"][n]["string"][2]) # fetch content
                            if str(top["dict"][i]["array"][2]["dict"][n]["string"][4]) == 'Sent': # sent/received?
                                sent = True
                            else:
                                sent = False
                            container.loc[n] = [time, msg, sent]
                            print('Processed thread ' + str(i) + ' message ' + str(n) + '/' + str(msg_count))
                        except:
                            print('Error at thread ' + str(i) + ' message ' + str(n) + '/' + str(msg_count))

Также, для справки, вот переменные, инициализированные в верхней части программы:

path = r'C:\Users\xxx\Documents\Python\Messages.xml'
tree = objectify.parse(path)
root = tree.getroot()
top = root.dict.array
target = ''
chunk_max = 500
container = pd.DataFrame(data=None, columns=['time', 'content', 'sent'])

Что происходит, независимо от того, сколько сообщений у меня с данным контактомпрограмма вылетает в случайной точке без кода ошибки.Для контакта, с которым у меня около 140 сообщений, происходит сбой около 90 сообщений. При обработке контакта с почти 150 000 сообщений он зависает около 1000.Точное количество текстов, которые оно может обработать, варьируется.Там нет кода ошибки;моя оболочка просто падает и перезагружается.

Я попытался запустить это как на Windows, так и на Mac OS X, и на каждой платформе, как на родной оболочке Python, так и на оболочке Spyder iPython.То же самое в каждом случае, хотя, как ни странно, оно последовательно проходит через больше сообщений в родной оболочке.Кроме того, примечательно, что использование моего ресурса никогда не возрастает при запуске программы.

...