[{"data":1,"prerenderedAt":356},["ShallowReactive",2],{"project-17927200":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":44,"post_text":45,"what":46,"said":91,"maker_in_thread":201,"shape":207,"grid":210,"attempts":317,"same_week":318,"maker_shows":34,"maker_hidden":348,"reader_version":349,"card":350},"17927200","Py-spy","A new sampling profiler for Python programs","title","Show HN: Py-spy – A new sampling profiler for Python programs","https:\u002F\u002Fgithub.com\u002Fbenfred\u002Fpy-spy","github.com","benfrederickson",1536249757,2018,286,43,96,2155,5,"legend","dev_tools","profiler","cli",[24,25,26,27],"python profiler","sampling profiler","flamegraph","python performance","loved",0.302,{"positive":31,"neutral":32,"mixed":33,"critical":34},9,10,2,1,22,{"execution":37,"design":39,"idea":40,"performance":42,"docs":43},{"positive":33,"critical":38},0,{"positive":33,"critical":34},{"positive":41,"critical":38},3,{"positive":33,"critical":38},{"positive":38,"critical":38},[41,38,41,41,18,18,41,18,41,18,38,38,38,38,38,38,38,41,18,41,38,38,38,38,38,41,18,38,18,41,38,18,41,34,41,38,41,38,38,38],null,{"problem":47,"audience":59,"pricing":45,"motivation":68,"time_to_build":45,"stack":79,"openness":88,"stage":89,"team_size":90},{"value":48,"source":49,"evidence":50},"Profiling running Python programs to find performance hotspots","commenter",[51,55],{"id":52,"by":53,"text":54},"17930450","TTPrograms","This is really fantastic. I just managed to find a 3x speedup on a compute heavy job I run using Py-spy - there was an unneeded hotspot in a library I'm using that I didn't…",{"id":56,"by":57,"text":58},"17932684","lathiat","I've been enjoying pyflame from Uber - which the author quotes in their info > The only other Python profiler that runs totally in a separate process is pyflame, which profiles…",{"value":60,"source":61,"evidence":62},"Python developers","inferred",[63,67],{"id":64,"by":65,"text":66},"17928883","hathawsh","Many thanks for building and releasing this. It's ridiculously easy to install (especially in virtualenvs) and very powerful. When I push '3' or '4', I get informative, stable…",{"id":52,"by":53,"text":54},{"value":69,"source":70,"evidence":71},"Inspired by rbspy for Ruby","maker",[72,75],{"id":73,"by":11,"text":74},"17927700","Check out rbspy https:\u002F\u002Fgithub.com\u002Frbspy\u002Frbspy (rbspy was the inspiration for this project =)",{"id":76,"by":77,"text":78},"17929063","maxmcd","The localhost talk for rbspy (the inspiration for this project) is awesome: https:\u002F\u002Fwww.recurse.com\u002Fevents\u002Flocalhost-julia-evans Imagine it should also provide relevant insights…",[80],{"value":81,"source":49,"evidence":82},"Rust",[83,84],{"id":64,"by":65,"text":66},{"id":85,"by":86,"text":87},"17930197","kevin_thibedeau","This is the same script. The Rust code is just invoking Perl to generate it.","open_source","launched","unknown",{"praise":92,"objections":117,"requests":140,"questions":161,"alternatives":177},[93,105,109],{"value":94,"source":49,"evidence":95},"Easy to install and use, works quickly",[96,97,101],{"id":64,"by":65,"text":66},{"id":98,"by":99,"text":100},"17927716","SketchySeaBeast","Oh that's great - I had it up and running in 30 seconds.",{"id":102,"by":103,"text":104},"17931269","craftyguy","This is great! I also took the liberty to add this (and setuptools_rust) to Arch Linux's AUR: https:\u002F\u002Faur.archlinux.org\u002Fpackages\u002Fpython-py-spy",{"value":106,"source":49,"evidence":107},"Helped find real performance hotspots",[108],{"id":52,"by":53,"text":54},{"value":110,"source":49,"evidence":111},"Built-in flamegraph and realtime top-style display",[112,113],{"id":56,"by":57,"text":58},{"id":114,"by":115,"text":116},"17932429","pvg","Great, thanks! And as a slightly different take than that of the person posting the issue - interfaces like kcachegrind are a pretty clunky (if powerful, in their clunky way) -…",[118,129],{"value":119,"source":49,"evidence":120},"Requires sudo on macOS",[121,125],{"id":122,"by":123,"text":124},"17930531","bobwaycott","Gave it a try, and wasn’t expecting to have to execute via sudo on macOS. I almost never use sudo, so this stands out as quite unexpected for a developer tool. Is there something…",{"id":126,"by":127,"text":128},"17931297","MetricMike","https:\u002F\u002Fgithub.com\u002Fbenfred\u002Fpy-spy#when-do-you-need-to-run-as-sudo tl;dr - yes, it's a limitation(?) of macOS syscalls.",{"value":130,"source":49,"evidence":131},"No multiprocessing support clarity",[132,136],{"id":133,"by":134,"text":135},"17928877","fake-name","Does it support python multiprocessing? Basically nothing out there does that I've found, and it's a really major pain-point for me.",{"id":137,"by":138,"text":139},"17931051","zzzeek","It says you pass it a pid, so yes",[141,148,157],{"value":142,"source":49,"evidence":143},"Ignore time spent in system calls like poll()",[144,145],{"id":64,"by":65,"text":66},{"id":146,"by":11,"text":147},"17929838","Thanks! Both of your suggestions totally make sense. I've created an issue to track the poll() issue here https:\u002F\u002Fgithub.com\u002Fbenfred\u002Fpy-spy\u002Fissues\u002F13 - I think that should be an…",{"value":149,"source":49,"evidence":150},"Export output to KCachegrind format",[151,154],{"id":152,"by":115,"text":153},"17928032","Wonderful. Can the data it produces be munged into something KCachegrind can show?",{"id":155,"by":11,"text":156},"17929820","Not yet - but I'm hoping to have a version that supports this next week. Will update this issue when it's done: https:\u002F\u002Fgithub.com\u002Fbenfred\u002Fpy-spy\u002Fissues\u002F3",{"value":158,"source":49,"evidence":159},"Pause button for copying file paths",[160],{"id":64,"by":65,"text":66},[162,173],{"value":163,"source":49,"evidence":164},"How to interpret the GIL percentage display",[165,169],{"id":166,"by":167,"text":168},"17932723","jpeanuts","This is a really great tool - the kind I didn't even know that I needed until I was given it! One question, does anyone here know how to interpret the GIL (Global Interpreter…",{"id":170,"by":171,"text":172},"17933011","toxik","Wow, it tracks GIL contention? Major feature for me. I use a lot of Numba, and it releases the GIL if you want — so threading is actually useful.",{"value":174,"source":49,"evidence":175},"Whether it supports Python multiprocessing",[176],{"id":133,"by":134,"text":135},[178,186,190,197],{"value":179,"source":49,"evidence":180},"rbspy",[181,182],{"id":73,"by":11,"text":74},{"id":183,"by":184,"text":185},"17928984","actuallyalys","Rbspy, the inspiration for this tool, has a similar default output, which you can see in the documentation, https:\u002F\u002Frbspy.github.io\u002F.",{"value":187,"source":49,"evidence":188},"pyflame",[189],{"id":56,"by":57,"text":58},{"value":191,"source":49,"evidence":192},"yappi",[193],{"id":194,"by":195,"text":196},"17929665","marmaduke","yappi? https:\u002F\u002Fbitbucket.org\u002Fsumerc\u002Fyappi\u002F",{"value":198,"source":49,"evidence":199},"kernprof",[200],{"id":52,"by":53,"text":54},{"comments":202,"answered":33,"key":203},4,[204,205,206],{"id":146,"text":147},{"id":73,"text":74},{"id":155,"text":156},{"commenters":208,"max_depth":18,"maker_replies":202,"first_comment_mins":209,"lifespan_hours":209},31,45,[211,213,215,218,222,224,226,228,229,231,236,240,242,245,248,250,253,255,257,258,261,264,265,267,270,272,274,275,276,279,281,284,287,288,289,293,296,298,302,307,310,312,315],[64,38,41,212,65,38],"project\u002Fmixed\u002Fexecution",[146,38,38,214,11,34],"maker\u002Fpositive\u002Fexecution",[216,38,41,217,171,38],"17933004","project\u002Fneutral\u002Fdesign",[219,34,41,220,221,38],"17929621","project\u002Fneutral\u002Fidea","gnufx",[76,33,18,223,77,38],"project\u002Fpositive\u002Fidea",[52,41,18,225,53,38],"project\u002Fpositive\u002Fperformance",[166,202,41,227,167,38],"project\u002Fneutral\u002Fperformance",[170,202,18,225,171,38],[56,18,41,230,57,38],"project\u002Fmixed\u002Fdesign",[232,233,18,234,235,38],"17927561",6,"project\u002Fpositive\u002Fdesign","samstave",[237,233,38,238,239,38],"17928775","commenter\u002Fneutral\u002Fdesign","_verandaguy",[241,233,38,238,221,38],"17929666",[243,233,38,238,244,38],"17929710","detaro",[246,233,38,238,247,38],"17930470","gsteinb88",[249,233,38,238,221,38],"17933087",[251,233,38,238,252,38],"17931744","andreareina",[254,233,38,238,221,38],"17933061",[85,233,38,256,86,38],"commenter\u002Fneutral\u002Fnone",[183,233,41,217,184,38],[98,259,18,260,99,38],7,"project\u002Fpositive\u002Fexecution",[133,262,41,263,134,38],8,"project\u002Fneutral\u002Fnone",[194,262,38,256,195,38],[266,262,38,256,134,38],"17930267",[268,262,38,256,269,38],"17931218","wrmsr",[271,262,38,256,134,38],"17932037",[273,262,38,256,221,38],"17933110",[137,262,41,263,138,38],[102,31,18,260,103,38],[277,32,18,223,278,38],"17927675","kawsper",[73,32,38,280,11,34],"other\u002Fneutral\u002Fnone",[282,32,18,223,283,38],"17927777","TeMPOraL",[152,285,41,286,115,38],11,"project\u002Fneutral\u002Fexecution",[155,285,38,214,11,34],[114,285,18,234,115,38],[290,291,41,220,292,38],"17932518",12,"nevon",[122,294,34,295,123,38],13,"project\u002Fcritical\u002Fdesign",[126,294,41,297,127,38],"maker\u002Fneutral\u002Fdocs",[299,300,38,280,301,38],"17930293",14,"AdamM12",[303,304,41,305,306,38],"17932253",15,"maker\u002Fneutral\u002Fnone","ant6n",[308,304,38,256,309,38],"17933052","A2017U1",[311,304,38,256,306,38],"17934695",[313,304,38,280,314,38],"17940718","yesenadam",[316,304,38,305,11,34],"17938532",[],[319,324,329,334,339,343],{"id":320,"name":321,"points":322,"category":323},"17952355","Hacklily",285,"creative",{"id":325,"name":326,"points":327,"category":328},"17948287","Zero",252,"infrastructure",{"id":330,"name":331,"points":332,"category":333},"17942032","Reminiscence",213,"productivity",{"id":335,"name":336,"points":337,"category":338},"17930669","BitMidi",168,"consumer_social",{"id":340,"name":341,"points":342,"category":20},"17951478","Ghuser.io",157,{"id":344,"name":345,"points":346,"category":347},"17959341","Mindstamp",138,"web_saas",false,"v2",{"id":351,"name":5,"line":6,"ai":348,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":352,"top":18,"kw":353,"maker":11,"domain":10,"tier":19,"attempts":38,"strip":354,"url":9,"mix":355,"praise":94,"objection":119,"sub":21},17927200,0.3,[24,25,26,27],"3033553535000000035300000350530531303000",[31,32,33,34],1794036569251]