การประมวลผลหลายขั้นตอนใน Python ที่มีอาร์กิวเมนต์ (คีย์เวิร์ด) หลายรายการ [ซ้ำกัน]
ฉันพยายามบันทึก 2 ไฟล์ json ในเวลาเดียวกันในการประมวลผลหลายขั้นตอน สำหรับสิ่งนี้ก่อนอื่นฉันต้องจัดลำดับอาร์เรย์ เมื่อฉันกำหนดcls=NumpyArrayEncode
ชั้นเรียนในการargs
ประมวลผลหลายขั้นตอนฉันได้รับข้อผิดพลาดเนื่องจากเราไม่สามารถกำหนดได้cls=NumpyArrayEncode
อาจเป็นเพราะการ=
ลงชื่อเข้าใช้เท่ากันargs
ในการประมวลผลหลายขั้นตอน
ด้านล่างนี้เป็นรหัสของฉันสำหรับกระบวนการเดียวเท่านั้น สำหรับแนวคิดกระบวนการที่สองจะเหมือนกัน
# json serialization
class NumpyArrayEncode(JSONEncoder):
def default(self, o):
if isinstance(o, np.ndarray):
returno.tolist()
return JSONEncoder.default(self, o)
json_data = np.array([[3, 5, 6], [8, 12, 6]]) # example
with open('test.json', 'w') as fn:
p1 = multiprocessing.Process(target = json.dump, args=(json_data, fn, cls=NumpyArrayEncode)) # here is problem that we can't add equal `=` sign in `args` in multiprocessing.
จะเพิ่มcls=NumpyArrayEncode
เป็นอาร์กิวเมนต์ในการประมวลผลหลายขั้นตอนได้อย่างไร?
กำลังมองหาข้อเสนอแนะที่ดี
คำตอบ
1 sim
สองตัวเลือก: ใช้kwargs
พารามิเตอร์ (ดูmultiprocessing.Processเอกสารประกอบเพื่อส่งผ่านอาร์กิวเมนต์คำสำคัญ:
multiprocessing.Process(target=json.dump,
args=(json_data, fn),
kwargs={"cls": NumpyArrayEncoder})
หรือคุณใช้functools.partial:
multiprocessing.Process(target=functools.partial(json.dump, cls=NumpyArrayEncoder),
args=(json_data, fn))