У меня проблема с multiprocessing.Pool()
.
Мой скрипт подключается к веб-сокету, чтобы получить кучу данных. Эти данные хранятся в списке. Моя функция formula()
выполняет расчеты на основе различных желаемых сценариев и действует, если сценарий возвращает значение True.
Ниже я разместил упрощенный код:
import multiprocessing, time, json
res_array = []
def process_message(msg):
res_array.insert(0, msg)
if len(res_array) > specificnumber:
del res_array[specificnumber:]
#inserts data in a list
def formula(res_array1):
# handles list
def initiate():
ma = SocketManager(client)
conn_key = ma.start_multiplex_socket(listofsockets, process_message)
ma.start()
# starts websocket
if __name__ == '__main__':
p1 = multiprocessing.Process(name='p1', target=initiate())
p2 = multiprocessing.Process(name='p2', target=formula(res_array))
p1.start()
p2.start()
Как видите, мне нужно позвонить initiate()
, чтобы запустить веб-сокет.
Мой план состоял в том, чтобы получать данные из веб-сокета, пока формула работает одновременно.
Этот код работает отлично, но медленно. Чтобы ускорить процесс, я хотел попробовать multiprocessing.Pool()
, но каждый найденный пример показывает только одну используемую функцию.
Вопрос:
Как я могу назначить 2 функции для одного пула? Пул должен обрабатывать функции initiate()
и formula()
одновременно с cpu_count()
как число процессов.
Это возможно?
Спасибо!