Nic Pottier
07/21/2025, 5:17 PMasyncio.run() loop within a Hamilton node to parallelize some work in that node? It seems to work, but I'm curious if there are gotchas.Nic Pottier
07/21/2025, 5:27 PMNic Pottier
07/21/2025, 5:31 PMNic Pottier
07/21/2025, 5:35 PMNic Pottier
07/21/2025, 5:35 PMdef pdf_image_captions(output_language_config: str, caption_prompt_config: PromptConfig, pdf_pages: list[Page]) -> list[ImageCaption]:
async def generate_captions():
captions = []
for page in pdf_pages:
for image in page.images:
captions.append(get_image_caption(caption_prompt_config, page, image, output_language_config))
return await asyncio.gather(*captions)
return asyncio.run(generate_captions())Nic Pottier
07/21/2025, 7:16 PMStefan Krawczyk
07/22/2025, 5:35 AMStefan Krawczyk
07/22/2025, 5:40 AMStefan Krawczyk
07/22/2025, 5:42 AMStefan Krawczyk
07/22/2025, 5:42 AMNic Pottier
07/22/2025, 2:38 PMStefan Krawczyk
07/22/2025, 2:48 PMElijah Ben Izzy
07/22/2025, 3:36 PMNic Pottier
07/22/2025, 6:40 PMNic Pottier
07/22/2025, 6:42 PMNic Pottier
07/22/2025, 6:43 PMawait on my node with the execution / resolution being exactly the same as a normal synchronous run.Nic Pottier
07/22/2025, 6:44 PMStefan Krawczyk
07/23/2025, 5:46 AMStefan Krawczyk
07/23/2025, 5:47 AMNic Pottier
07/23/2025, 3:01 PMasync node. It also seems slightly riskier in that you then are depending on no other event loops running. Am I underestimating how difficult it would be to have a Hamilton driver that does this?
Just feels like a really nice option for those using Hamilton at the command line to be able to speed up individual nodes with minimal complication of the actual node implementation. (and while retaining caching and run introspection via the call graph)Stefan Krawczyk
07/23/2025, 3:05 PMStefan Krawczyk
07/23/2025, 3:08 PMNic Pottier
07/23/2025, 3:14 PMNic Pottier
07/23/2025, 3:15 PMAsyncSyncDriver heh.Nic Pottier
07/23/2025, 3:15 PMStefan Krawczyk
07/23/2025, 3:16 PMNic Pottier
07/23/2025, 3:17 PMStefan Krawczyk
07/23/2025, 3:17 PMStefan Krawczyk
07/23/2025, 3:18 PMNic Pottier
07/23/2025, 3:20 PMNic Pottier
07/23/2025, 3:24 PMNic Pottier
07/23/2025, 3:24 PMStefan Krawczyk
07/23/2025, 3:45 PMStefan Krawczyk
07/23/2025, 3:54 PMNic Pottier
07/23/2025, 3:55 PMStefan Krawczyk
07/23/2025, 4:15 PMStefan Krawczyk
07/23/2025, 4:17 PMStefan Krawczyk
07/23/2025, 4:17 PMStefan Krawczyk
07/23/2025, 4:18 PMNic Pottier
07/23/2025, 4:19 PM