我有一个程序,用于查询postgres数据库中的表,然后将查询结果分为几组,然后将每个组上载到Azure blob。使用concurrent.futures.ThreadPoolExecutor
完成Blob上传,并通过asyncio
事件循环进行管理。
大致来说,逻辑看起来像这样:
processes = []
loop = asyncio.get_event_loop()
for b in blobs:
processes.append(loop.run_in_executor(executor, uploadfunction, *args))
commands = asyncio.gather(*processes)
results = loop.run_until_complete(commands)
此blob上传是多线程的,但是现在我想一次在许多表上运行此过程。我以前曾使用asyncio
创建多个进程,例如与create_subprocess_shell
。 (我需要使用separate processes连接到postgres。)
我可以创建一个新脚本来调用许多进程并同时运行它们吗?尤其是,每个进程中的asyncio
事件循环是该进程专用的吗?,或者每个进程在尝试编辑事件循环时都会遇到问题吗?而且,管理子流程的“主事件循环”也会分开吗?