I know the question is a bit old, but just as reference for anyone looking at this.
By default, ps doesn't show threads, but you can use the -T flag to see them. This in combination with the -fly option to print the output using long format will give you the information you are looking for:
ps -flye -T
To distinguish between processes and threads you can use the PID and SPID fields. All the threads share the same PID but have a unique SPID. When PID==SPID, that's the parent process.
For debugging purposes, I find quite useful looking at the threads of a specific process:
$ ps -fly -T -p 193471
S UID PID SPID PPID C PRI NI RSS SZ WCHAN STIME TTY TIME CMD
S root 193471 193471 193466 0 80 0 902460 871117 poll_s 10:46 ? 00:00:17 /usr/bin/python36 xyzzy
S root 193471 193665 193466 4 80 0 902460 871117 futex_ 10:46 ? 00:01:22 /usr/bin/python36 xyzzy
S root 193471 193667 193466 4 80 0 902460 871117 futex_ 10:46 ? 00:01:32 /usr/bin/python36 xyzzy
S root 193471 193669 193466 4 80 0 902460 871117 futex_ 10:46 ? 00:01:26 /usr/bin/python36 xyzzy
S root 193471 193672 193466 4 80 0 902460 871117 futex_ 10:46 ? 00:01:23 /usr/bin/python36 xyzzy
S root 193471 193676 193466 4 80 0 902460 871117 poll_s 10:46 ? 00:01:33 /usr/bin/python36 xyzzy