{"href":"https://api.simplecast.com/oembed?url=https%3A%2F%2Fpytorch-dev-podcast.simplecast.com%2Fepisodes%2Fpyobject-preservation-q6sE1n7z","width":444,"version":"1.0","type":"rich","title":"PyObject preservation","thumbnail_width":300,"thumbnail_url":"https://image.simplecastcdn.com/images/8cefde76-fb46-406a-8d87-ab0df67f3423/92f11400-2dad-49b4-8b14-cce35f5ab765/pytorch-symbol-02-orangeondark.jpg","thumbnail_height":300,"provider_url":"https://simplecast.com","provider_name":"Simplecast","html":"<iframe src=\"https://player.simplecast.com/c9317b54-5507-4a91-98e6-a2fa5ba2ac62\" height=\"200\" width=\"100%\" title=\"PyObject preservation\" frameborder=\"0\" scrolling=\"no\"></iframe>","height":200,"description":"Given two separately refcounted objects, how can you arrange for each of them to stay live so long as the other is live? Why doesn't just having a strong-strong or strong-weak reference between the two objects work? What is object resurrection in CPython? What's a finalizer and why does it make things more complicated? How does Python GC work?"}