Многопроцессорная обработка Python с `Process` вызывает утечку памяти ..? - PullRequest
0 голосов
/ 26 августа 2018

Ниже приведена часть кода, использующая библиотеку websocket-client , которая продолжает получать данные с сервера веб-сокетов на определенном пределе и сохраняет их в базе данных на этом пределе.

def store_data_in_DB(data_list):
    for data in data_list:
        # save data in DB

class MySocket:

    ...

    def on_message(self, ws, message):
        data_dict = json.loads(message)
        self.data_list.append(data_dict)

        if len(self.data_list) == 1000:
            proc = Process(
                target=store_data_in_DB,
                args=(self.data_list, )
            )
            proc.start()
            self.data_list = []

    ...

Причина, по которой я использую многопроцессорность, заключается в том, что "сохранение данных" и "получение данных с сервера" происходит параллельно.

Проблема в том, что это происходит как бы утечка памяти, потому что она не обрабатывает Process после того, как он завершил свою задачу.

Я пытался с join(), но он ждет, пока процесс не завершится, а это не то, чего я хочу.

Есть ли способ решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...