gpt4 book ai didi

python - 如何在 python pandas 中使用数据框的引用传递

转载 作者:行者123 更新时间:2023-11-30 23:12:35 27 4
gpt4 key购买 nike

  1. 经理代码..

    import pandas as pd    
    import multiprocessing
    import time
    import MyDF
    import WORKER
    class Manager():
    'Common base class for all Manager'
    def __init__(self,Name):
    print('Hello Manager..')
    self.MDF=MyDF.MYDF(Name);
    self.Arg=self.MDF.display();
    self.WK=WORKER.Worker(self.Arg); MGR=Manager('event_wise_count') if __name__ == '__main__':
    jobs = []
    x=5;
    for i in range(5):
    x=10*i
    print('Manager : ',i)
    p = multiprocessing.Process(target=MGR.WK.DISPLAY)
    jobs.append(p)
    p.start()
    time.sleep(x);
  2. 工作人员代码...

    import pandas as pd      
    import time
    class Worker():
    'Common base class for all Workers'
    empCount = 0
    def __init__(self,DF):
    self.DF=DF;
    print('Hello worker..',self.DF.count())
    def DISPLAY(self):
    self.DF=self.DF.head(10);
    return self.DF

    嗨,我正在尝试进行多重处理。我想与所有子进程共享数据帧地址。

    因此,在上面的 Manager 类中,我生成了 5 个进程,其中每个子进程都需要使用工作器类的数据帧,并期望每个子进程将共享工作器数据帧的引用。但不幸的是它没有发生..

    欢迎任何答案..

    提前致谢,..请:)..

最佳答案

This answer建议使用命名空间 share large objects between processes引用。

下面是一个应用程序示例,其中 4 个不同的进程可以从同一个 DataFrame 中读取数据。 (注意:您无法在交互式控制台上运行它 - 将其另存为 program.py 并运行它。)

import pandas as pd
from multiprocessing import Manager, Pool


def get_slice(namespace, column, rows):
'''Return the first `rows` rows from column `column in namespace.data'''
return namespace.data[column].head(rows)

if __name__ == '__main__':
# Create a namespace to place our DataFrame in it
manager = Manager()
namespace = manager.Namespace()
namespace.data = pd.DataFrame(pd.np.random.rand(1000, 10))

# Create 4 processes
pool = Pool(processes=2)
for column in namespace.data.columns:
# Each pool can access the same DataFrame object
result = pool.apply_async(get_slice, [namespace, column, 5])
print result._job, column, result.get().tolist()

虽然从 DataFrame 中读取数据完全没问题,但如果您想写回它,就会有点棘手。最好坚持使用不可变对象(immutable对象),除非您确实需要大型可写对象。

关于python - 如何在 python pandas 中使用数据框的引用传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29748481/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com