为什么多处理挂起了



我第一次尝试使用多处理,代码如下:

def fuzzy_match(blg_matches, op_matches):
update_dicts = []
with concurrent.futures.ProcessPoolExecutor() as executor:
scored_matches = [
executor.submit(run_matching, blg_match, repeat(op_matches))
for blg_match in blg_matches
]
for match in concurrent.futures.as_completed(scored_matches):
update_dicts.append(match)
return update_dicts

然而,它只是挂着,什么也不做。

为了进行测试,我将run_matching功能简化为:

def run_matching(blg_match, op_matches):
return 2

它仍然挂着。

blg_matchesop_matches都是SQLAlchemyQuery对象。

你知道我哪里错了吗?

所以这里有两个问题。

  1. 我使用Windows,您需要确保您的多处理代码在if __name__ == "__main__":
  2. 多处理似乎不喜欢SQLAlchemy查询对象。当我用列表替换查询时,一切都很好

相关内容

  • 没有找到相关文章

最新更新