У меня есть данные в следующем формате в файле.
"Attach Listener" #7338 daemon prio=9 os_prio=0 tid=0x00007f51c0009000 nid=0x731c waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
- None
"lettuce-nioEventLoop-9-155" #362 daemon prio=5 os_prio=0 tid=0x00007f515000c800 nid=0x4f7c runnable [0x00007f50da85d000]
java.lang.Thread.State: RUNNABLE
at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:79)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
- locked <0x0000000082af6f50> (a io.netty.channel.nio.SelectedSelectionKeySet)
- locked <0x0000000082af8050> (a java.util.Collections$UnmodifiableSet)
- locked <0x0000000082af7f78> (a sun.nio.ch.EPollSelectorImpl)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
at io.netty.channel.nio.SelectedSelectionKeySetSelector.select(SelectedSelectionKeySetSelector.java:62)
at io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:753)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:409)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:138)
at java.lang.Thread.run(Thread.java:745)
Locked ownable synchronizers:
- None
"lettuce-nioEventLoop-9-154" #360 daemon prio=5 os_prio=0 tid=0x00007f51d00c3800 nid=0x4dd5 runnable [0x00007f50da45b000]
java.lang.Thread.State: RUNNABLE
at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:79)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
- locked <0x0000000082afa8b0> (a io.netty.channel.nio.SelectedSelectionKeySet)
- locked <0x0000000082afb9b0> (a java.util.Collections$UnmodifiableSet)
- locked <0x0000000082afb8d8> (a sun.nio.ch.EPollSelectorImpl)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
at io.netty.channel.nio.SelectedSelectionKeySetSelector.select(SelectedSelectionKeySetSelector.java:62)
at io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:753)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:409)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:138)
at java.lang.Thread.run(Thread.java:745)
Locked ownable synchronizers:
- None
"Attach Listener" #7338 daemon prio=9 os_prio=0 tid=0x00007f51c0009000 nid=0x731c waiting on condition [0x0000000000000000]
java.lang.Thread.State: WAITING
Locked ownable synchronizers:
- None
Мне нужно хранить полную трассировку стека на основе первой строки каждого стека. т.е. "lettuce-nioEventLoop-9-155" # 362 демон prio = 5 os_prio = 0 tid = 0x00007f515000c800 nid = 0x4f7c, работоспособный [0x00007f50da85d000]
Мне нужно собрать первые строки каждой трассы, и когда я сравниваю имеющиеся у меня данные с данными в файле и, если они совпадают, мне нужно собрать полную трассировку этого. Могут быть случаи, когда первая строка может быть одинаковой для некоторой другой трассировки стека в том же файле, и если это так, мне нужно добавить ее к тем же уже собранным данным ранее.
Вот что я сделал -
data_methods = []
tdfilename = r"C:\Users\hello\Desktop\trace_test.txt"
with open(tdfilename) as f:
for line in f:
method = re.findall(r'"(.*?)]', line)
fmethod = ''.join(method)
if fmethod:
data_methods.append("\""+fmethod+"]") # Adding " and ] at the start and end of the line as per the file content
f.close()
Я собираю первые строки всех трасс стека в список. Моя идея здесь состоит в том, чтобы сравнить эти данные списка с данными в файле и, если они совпадают, мне нужно собрать полный след. Я застрял на получении логики для этого.
Должен ли я использовать dict
для сохранения первой строки в качестве ключей и содержимого в качестве значений, поскольку первые строки могут встречаться несколько раз с одними и теми же данными?
Как мне этого добиться. Я делаю это, чтобы облегчить нашу работу в повседневной жизни.