多进程并行读取数据

2024-04-25 22:05:16 发布

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

这能做到吗?在

我的想法是:

我将有一个dict,每个子进程将添加一个新的关键:价值组合听天由命

这可以用多重处理来完成吗?有什么限制吗?在

谢谢!在


Tags: 进程dict关键价值
3条回答

在使用多处理的情况下,需要将条目传播到“父进程字典”,但有一种解决方法:

使用多重处理是有帮助的,因为那个叫吉尔的家伙。。。所以,是的,我确实是不假思索地使用了它,因为它很好地利用了核心。但我用的是经理。比如:

a_manager = multiprocessing.Manager

然后我将其用作共享结构:

^{pr2}$

在启动流程工人的呼叫中:

worker_seq = []
for n in range(multiprocessing.cpu_count()):
    worker_seq.append(multiprocessing.Process(target=my_work_function, args=(shared_map,))

有很多以前的艺术,比如:

Yes, Python supports multiprocessing。在

但是,由于您打算为每个“进程”使用相同的dict,所以我建议使用multi-threading而不是多处理。这允许每个线程使用相同的dict,而不必将来自不同进程的数据发送到父进程的dict

显然,如果您的输入方法依赖于用户或来自stdin,则会出现问题。但是如果你从一个文件中得到输入,它应该可以正常工作。在

我建议使用this博客来帮助您使用线程池。它还解释了多处理.dummy,但文件没有。在

如果您只想在子进程中读入数据,并且每个子进程将添加一个键值对,您可以使用^{}

import multiprocessing

def worker(x):
    return x, x ** 2

if __name__ == '__main__':
    multiprocessing.freeze_support()

    pool = multiprocessing.Pool(multiprocessing.cpu_count())
    d = dict(pool.map(worker, xrange(10)))
    print d

输出:

^{pr2}$

相关问题 更多 >