是否可以使用共享内存并行任务处理python?我的任务应该在几个核心上并行(虽然线程模块不适合这里,据我所知,唯一的工具就是多处理)。我创建了一个线程(在python案例进程中)池中有很多任务。然后我需要使用主线程(进程)中的大量数据初始化此线程(进程)。线程处理这些数据并将新的数据(也是很多)返回给主线程(进程)。我看到一个巨大的开销是每个任务必须在进程的情况下将数据复制到新进程,并在完成后执行相同的操作。但是在线程的情况下,这被消除了。它应该是一个巨大的加速。我可以用python实现这个加速吗?
答案 0 :(得分:2)
是的,multiprocessing
模块支持将对象放在共享内存中。请参阅documentation。
答案 1 :(得分:1)
由于GIL序列化,线程无法帮助您。但是,您仍然可以使用多处理并使用mmap
模块或等效模块在进程之间共享数据。这将要求数据的结构可以从文件中读取,因此您将无法使用字典 - 但使用基于文件的存储(如sqlite)会没问题。