Multiprocessing dengan Python dengan beberapa argumen (kata kunci) [duplikat]
Saya mencoba untuk menyimpan 2 file json sekaligus dalam multiprocessing. Untuk ini pertama saya perlu membuat serial array. Ketika saya menetapkan cls=NumpyArrayEncode
kelas dalam args
multiprocessing maka saya mendapatkan kesalahan karena kita tidak dapat menetapkan cls=NumpyArrayEncode
mungkin karena =
masuk yang sama args
di multiprocessing.
Di bawah ini adalah kode saya hanya untuk satu proses. Untuk ide proses kedua sama.
# 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.
Bagaimana menambahkan cls=NumpyArrayEncode
sebagai argumen dalam multiprocessing?
Mencari saran yang baik
Jawaban
1 sim
Dua opsi: Gunakan kwargs
parameter (lihat multiprocessing.Processdokumentasi untuk menyampaikan argumen kata kunci:
multiprocessing.Process(target=json.dump,
args=(json_data, fn),
kwargs={"cls": NumpyArrayEncoder})
atau Anda menggunakan functools.partial:
multiprocessing.Process(target=functools.partial(json.dump, cls=NumpyArrayEncoder),
args=(json_data, fn))
Kiat Pemilik Anjing yang Bermanfaat: Mengapa Penting untuk Membiarkan Anjing Anda Mengendus di Jalan
Jana Duggar: Semua yang Dia Katakan Tentang Cinta dan Jendela 5 Tahunnya untuk Menemukan 'Yang Satu'