簡體   English   中英

Python類不會更改類變量

[英]Python class doesn't change class variable

嗨,我正在編寫一個具有多個進程的簡單腳本。 這是我正在使用的課程:

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

當我打印data_frame時,即使在run()函數中更改了它,它也是空的。

我想念什么?

進程不共享其內存地址空間。 借助Linux進程分叉策略,您通常會感覺到子進程與父進程共享其內存,但實際上它是一個副本。

這意味着子進程中的更改將不會反映在其父進程(或任何其他進程)中。

Python多處理庫提供了幾種在進程之間共享內存的機制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM