我有一个很大的(只读)数据数组,我想由多个进程并行处理。
我喜欢Pool.map函数,并希望使用它来并行计算该数据上的函数。
我看到可以使用Value或Array类在进程之间使用共享内存数据。但是,当我尝试使用它时,我得到一个RuntimeError:'使用Pool.map函数时,应该仅通过继承在进程之间共享SynchronizedString对象:
这是我正在尝试做的一个简化示例:
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", "b", "s", "d"]] )
谁能告诉我我在做什么错?
因此,我想做的是在进程池中创建新的共享内存分配数组后,将信息传递给这些进程。
千万里不及你
蛊毒传说
相关分类