场景是使用 tornado 写了一个服务,涉及到一些耗 cpu 的计算,使用了concurrent.futures.ProcessPoolExecutor
。
那么最佳实践应该是每次请求时初始化一个进程池,还是保持一个全局的进程池?
class MyHandler(BaseHandler):
@coroutine
def post(self, *args, **kwargs):
...
with ProcessPoolExecutor() as process_pool:
fs = [process_pool.submit(job) for job in jobs]
...
还是这样?
class MyHandler(BaseHandler):
process_pool = ProcessPoolExecutor()
@coroutine
def post(self, *args, **kwargs):
...
fs = [self.process_pool.submit(job) for job in jobs]
...
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.