即使使用 Manager.list() 也不会使用多处理池将值附加到列表中

Even using Manager.list() the values are not being appended to the list using multiprocessing pool

正如在下面的代码中所看到的,我正在生成一个带有管理器和列表理解的多处理来处理池:

import multiprocessing

def foo(name,archive):
    print('hello ', name)
    archive.append('hello ', name)

def main():
    max_process = multiprocessing.cpu_count()-1 or 1
    pool = multiprocessing.Pool(max_process)
    manager = multiprocessing.Manager()

    archive = manager.list()

    [pool.apply_async(foo, args=[name,archive]) for name in range(0, 10)]
    pool.close()
    pool.join()
    print(archive)

if __name__ == '__main__':
    main()

但是附件仍然没有放在管理员设计的列表中:

hello  0
hello  4
hello  5
hello  7
hello  1
hello  6
hello  8
hello  3
hello  9
hello  2
[]

我该如何解决这个问题?

尝试将 archive.append('hello ', name) 更改为:

archive.append(f"hello {name}")

那么结果是:

hello  0
hello  5
hello  1
hello  9
hello  6
hello  3
hello  7
hello  8
hello  2
hello  4
['hello 0', 'hello 5', 'hello 1', 'hello 6', 'hello 9', 'hello 7', 'hello 3', 'hello 8', 'hello 2', 'hello 4']