Как использовать функцию Java в Python с многопроцессорной обработкой? - PullRequest
0 голосов
/ 24 апреля 2020

Я новичок в многопроцессорности с Python. У меня есть java функция для использования в Python, я использовал jpype, чтобы обернуть функцию. Мне нужно использовать функцию с многопроцессорной обработкой, и я использовал следующий блок кода для запуска функции.

data_split = np.array_split(data, num_of_processes)
ctx = mp.get_context("spawn")
pool = ctx.Pool(num_of_processes)
data = pd.concat(pool.map(func, data_split))
pool.close()
pool.join()

Но код выдает ошибку

Can't pickle <java class 'java.lang.String'>: attribute lookup java.lang.String on jpype._jstring failed

Я прочитал документацию jpype о многопроцессорности, и есть предложение, которое говорит, что очередь должна быть обернута JPickle, но я не мог понять.

Это можно преодолеть, обернув очередь для первого кодирования в поток байтов с использованием пакета JPickle

Как я могу реализовать эту упаковку пула? Что такое указанная библиотека?

...