我正在使用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),但是仍然需要相同的时间来完成运行。
在我看来,多处理代码无法正常工作,或者只有一个线程正在运行此功能。 有时它在运行过程中似乎也变慢了。
我在代码中缺少什么吗? 我该怎么解决?