Пафос: принуждаем порождение на Linux
У меня есть код Python, который работает в Windows, однако при работе в Linux он просто зависает. Я использую JPype, поэтому я подозреваю, что может быть некоторая проблема с несколькими общими процессами, пытающимися использовать один и тот же канал для доступа к Java (разные процессы созданы, но зависают в строке JPype). Есть ли способ заставить нереста в Pathos копировать реализацию Windows? (например, set_start_method или get_context в обычной многопроцессорной библиотеке?)
Благодарю.
1 ответ
Чтобы ответить на мой собственный вопрос (и это немного неприятно), но после копания кода вы можете:
import multiprocess.context as ctx
ctx._force_start_method('spawn')
Что успешно решает проблему с зависанием JPype. Разница между Linux и Windows заключается в том, что когда Windows порождает новый процесс, запускается новая JVM (jpype.startJVM()), тогда как разветвленный процесс должен использовать один и тот же (поэтому я предполагаю, что несколько процессов пытаются использовать тот же канал для Java). Насколько я могу судить, set_start_method, похоже, не был реализован.