Ниже приведена часть кода, использующая библиотеку 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()
, но он ждет, пока процесс не завершится, а это не то, чего я хочу.
Есть ли способ решить эту проблему?