Keras на самом деле пытается использовать простой пул потоков, но похоже, что стандартная библиотека все равно вытягивает некоторый код межпроцессной синхронизации. Я думаю, это не было замечено, потому что все основные платформы поддерживают семафоры.
Чтобы обойти это, запустите следующий код перед использованием Keras:
import multiprocessing
import threading
def threading_func(name):
def f(self, *args, **kwargs):
return getattr(threading, name)(*args, **kwargs)
f.__name__ = f.__qualname__ = name
return f
ctx = multiprocessing.get_context()
for name in ["Lock", "RLock", "Condition", "Semaphore", "BoundedSemaphore",
"Event", "Barrier"]:
setattr(type(ctx), name, threading_func(name))
setattr(multiprocessing, name, getattr(ctx, name))
Пожалуйста, дайте мне знать комментарий, работает ли это, поскольку я, вероятно, включу его в следующую версию Chaquopy.