Python多重处理以遍历列表

时间:2019-02-10 16:51:21

标签: python python-multiprocessing

我正在使用python 2.7.5(目前无法升级):) 这是我的多处理代码,所有内容都在相同的python脚本中:

def get_data(self, data):
    pool = Pool(processes=8)
    data_to_add = list()
    print("Gathering data")
    for machine in data:
        data_to_add.extend(pool.map(create_doc_struct, [machine]))
    pool.close()
    return data_to_add

这是create_doc_struct函数:

def create_doc_struct(_machine):
    from multiprocessing import Pool
    export_json = my_class.get_collection(my_class.export_collection).find({})
for exported_data in export_json:
    if _machine["Hostname"] == exported_data["name"]:
        d = {
            "hostname": _machine["Hostname"],
            "server": exported_data["Server"]
        }
        return d

当我运行脚本时,看起来好像生成了8个线程,但是当我使用一个或8个线程运行时,脚本的运行时间是相同的。

我尝试添加更多的vCPU(当前为16个)和RAM(64 GB),但是仍然需要相同的时间来完成运行。

在我看来,多处理代码无法正常工作,或者只有一个线程正在运行此功能。 有时它在运行过程中似乎也变慢了。

我在代码中缺少什么吗? 我该怎么解决?

0 个答案:

没有答案