相关疑难解决方法(0)

如何在Python多处理中将Pool.map与Array(共享内存)结合起来?

我有一个非常大(只读)的数据数组,我希望由多个进程并行处理.

我喜欢Pool.map函数,并希望用它来并行计算该数据的函数.

我看到可以使用Value或Array类在进程之间使用共享内存数据.但是当我尝试使用它时,我得到一个RuntimeError:'SynchronizedString对象只应在使用Pool.map函数时通过继承在进程之间共享:

这是我想要做的简化示例:

from sys import stdin
from multiprocessing import Pool, Array

def count_it( arr, key ):
  count = 0
  for c in arr:
    if c == key:
      count += 1
  return count

if __name__ == '__main__':
  testData = "abcabcs bsdfsdf gdfg dffdgdfg sdfsdfsd sdfdsfsdf"
  # want to share it using shared memory
  toShare = Array('c', testData)

  # this works
  print count_it( toShare, "a" )

  pool = Pool()

  # RuntimeError here
  print pool.map( count_it, [(toShare,key) for key in ["a", …
Run Code Online (Sandbox Code Playgroud)

python pool shared-memory multiprocessing

52
推荐指数
4
解决办法
3万
查看次数

标签 统计

multiprocessing ×1

pool ×1

python ×1

shared-memory ×1