python3多处理池如何知道何时选择另一组值?

2024-06-30 08:11:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有我自己的包,想并行它正在做的任务。 我需要在单个worker中打开会话、执行查询和关闭会话。 以多处理文档为例,脚本如下所示:

from multiprocessing import Pool
from OwnDB import odb

def worker(y):
    session = odb('db_name', 'user', 'password')
    print(session)
    result = session.query("select name from table")
    session.disconnect()
    return [y, result]

if __name__ == '__main__':
    test_nums = [1,2,3,4,5,6]
    with Pool(processes=2) as p:
        print(p.map(worker, test_nums))

这段代码不需要打开和关闭会话就可以正常工作。但是,当我用会话代码执行它时,我只得到第一组池工作线程(在本例中为2)的结果,然后它运行直到我杀死它

我的假设是,多处理包不知道worker何时完成—为什么会这样?工人如何表示它完成了


Tags: namefrom文档testimport脚本sessionresult