Python类不改变variab类

2024-04-26 11:39:20 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我正在写一个多进程的简单脚本。下面是我正在使用的类:

class WorkerProcess(multiprocessing.Process):
    def __init__(self, batch):
        multiprocessing.Process.__init__(self)
        self.batch = batch
        self.data_frame = pd.DataFrame()

    def run(self):
        temp = []
        for item in self.batch:
            temp.append(item)
        self.data_frame = pd.DataFrame(temp, columns=temp[0].keys())
        print('empty: ', self.data_frame.empty) # everything is fine

之后,我启动进程并加入它们:

    workers = []
    for i in range(max_processes):
        try:
            batch = batches_data.pop()
            workers.append(WorkerProcess(batch))
        except Exception as e:
            pass

    for worker in workers:
        worker.start()

    for worker in workers:
        worker.join()

    for worker in workers:
        print(worker.data_frame) # it is empty

当我打印数据时,它是空的,即使在run()函数中改变了。你知道吗

我错过了什么?你知道吗


Tags: inselffordata进程defbatchmultiprocessing
1条回答
网友
1楼 · 发布于 2024-04-26 11:39:20

进程不共享它们的内存地址空间。多亏了Linux进程分叉策略,您通常会感觉子进程与父进程共享内存,但实际上它是一个副本。你知道吗

这意味着子进程中的更改不会反映在其父进程(或任何其他进程)中。你知道吗

Python多处理库为share memory between processes提供了几种机制。你知道吗

相关问题 更多 >