我試圖修改一個JSON文件multiprocessing
。我將能夠將JSON拆分爲塊,以便每個進程只能訪問和修改JSON的某個部分(因此可以確保沒有兩個進程需要修改相同的屬性)。我的問題是,如何在進程之間共享JSON對象,以便更改反映到原始對象上?我知道,multiprocessing
將該對象作爲副本傳遞,因此我需要使用Manager()
,但我該怎麼做?目前,我有Python多處理 - 通過多個進程修改JSON
def parallelUpdateJSON(datachunk):
for feature in datachunk:
#modify chunk
def writeGeoJSON():
with open('geo.geojson') as f:
data = json.load(f)
pool = Pool()
for i in range(0, mp.cpu_count())):
#chunk data into a list, so I get listofchunks = [chunk1, chunk2, etc.,]
#where chunk1 = data[0:chunksize], chunk2 = data[chunksize:2*chunksize] etc.
pool.map(parallelUpdateJSON, listofchunks)
pool.close()
pool.join()
with open('test_parallel.geojson', 'w') as outfile:
json.dump(data, outfile)
但當然這傳遞大塊的副本,所以原來data
對象不會被修改。我怎樣才能讓data
實際上被這些進程修改?謝謝!
你需要使用在你把JSON對象修改隊列,另一個隊列中的進程將會把結果 – BlackBear