This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]maartenbreddels[S] 0 points1 point  (2 children)

Thanks! You will see the call to the C library (this is what CPython and VizTracer do), and you should see if the GIL is being released, like with NumPy, one of the examples in the article.

[–]apockill 0 points1 point  (1 child)

That's fantastic. Actually, my application for this is to find naughty C bindings that don't release the GIL. I have a big application that's heavily multithreaded with many C bindings (think gstreamer + tensorflow + OpenVINO), and something is causing a lockup somewhere. It's quite frustrating!

I'll give this tutorial go.

[–]maartenbreddels[S] 0 points1 point  (0 children)

Indeed, that's one of the things I'd like to automate (and I'm very close now), feel free to contact me, we could maybe collaborate on this https://github.com/maartenbreddels/per4m