带有`Process`的Python多处理会导致内存泄漏。

时间:2018-08-26 08:00:10

标签: python websocket multiprocessing

下面是使用websocket-client库的代码的一部分,该库在一定限制下始终从Web套接字服务器获取数据,并在该限制下将其保存在数据库中。

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(),但它一直等到过程结束,这不是我想要的。

有什么办法解决这个问题?

0 个答案:

没有答案