[英]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.