我的应用程序重复轮询API并生成进程以解析这些调用产生的任何新数据,有条件地根据这些数据发出API请求。周转时间的速度至关重要。
一个巨大的瓶颈似乎与实际生成的进程本身的设置有关 - 一些模块导入和正常的实例化代码,在中等的亚马逊设置†上需要0.05秒。似乎有一批进程已经完成了††,并等待处理结果。在Python中创建/与池(10-20?)的热,可重用和极轻量级进程进行通信的最佳方法是什么?
† - 是的,我知道在这个问题上抛出更好的硬件会有所帮助,我也会这样做。
†† - 是的,我知道少做会有所帮助,我正在努力使代码尽可能简化和最小化
答案 0 :(得分:1)
嗯,这里有一个学习曲线,但是multiprocessing.Pool()
将创建一个包含您指定的任意数量的进程的池。使用initializer=
参数指定每个进程在开始时运行的函数。然后,您可以使用几种方法将工作项提交到池中的流程 - 阅读文档,使用它,并在遇到问题时提出问题。
一个警告:“非常轻量级的过程”是不可能的。根据定义,流程“很重”。 “有多重”取决于您的操作系统,与您使用的编程语言几乎没有任何关系。如果您正在寻找轻量级,那么您正在寻找线程。