【发布时间】:2020-04-02 07:01:08
【问题描述】:
目标是在执行程序其余部分的过程中并行创建一个 docx 文档。
“第一个”函数应该只调用将创建 docx 的异步“第二个”函数。 现在我使用模块 asyncio、multiprocessing、concurrent.futures,但没有创建 docx:
def first(self, event):
pool = ThreadPoolExecutor(max_workers=multiprocessing.cpu_count())
loop = asyncio.get_event_loop()
loop.run_in_executor(pool, self.second)
async def second(self):
document = Document()
document.save('test.docx')
我确定问题出在“第一个”函数上,它调用“第二个”的方式,但有人对我说,这不是异步的错。在我找到最接近解决方案的方法之前,我一直面临这样一个问题,即只有在整个程序执行过程完成后才创建文档——这不是目标。
我正在处理一个没有时间修复的旧项目;里面的基本东西有很多错误,所以浏览器没有帮助 - 它需要针对具体情况的东西。即便如此,请告诉我如何解决这个问题。 谢谢。
【问题讨论】:
-
如果你只需要并行调用一个函数,你不应该使用
asyncio。只需使用concurrent.futures。 -
@giacomo-alzetta,请告诉我如何在上面的代码示例中做到这一点?
标签: python asynchronous multiprocessing python-asyncio