我有两个函数,正在使用Python中的多处理程序运行。我在下面给出了一个示例(为简单起见,减少了功能代码)。我想将两个函数的输出附加到单个数据框中并存储到“ df”中。
import multiprocessing
def uttar_pradesh():
up=pd.DataFrame({'date':'01-09-2020','time':'00:00:00','demand':6577,'state':"Uttar Pradesh"})
return up
def andhra_pradesh():
ap=pd.DataFrame({'date':'01-09-2020','time':'00:00:00','demand':3797,'state':"Andhra Pradesh"})
return ap
if __name__ == "__main__":
df = []
p1 = multiprocessing.Process(target=uttar_pradesh )
p2 = multiprocessing.Process(target=andhra_pradesh)
df.append(p1)
df.append(p2)
p1.start()
p2.start()
p1.join()
p2.join()
print(df)
答案 0 :(得分:0)
multiprocessing.Process()
不会给您任何结果值,它只会在其他进程中运行函数。
假设您可以将函数重写为表格
def get_state_data(state):
return data_for_that_state
(为什么不可以)
然后可以将更高级别的Pool
与map
(或imap
或imap_unordered
)一起使用:
states = ["uttar_pradesh", "andhra_pradesh"]
with multiprocessing.Pool() as p:
for result in p.map(get_state_data, states):
pass # append the result data or do whatever with it
如果您不想使用Pool和map,也可以设置multiprocessing.Queue()
并传递给子流程并读取它,但这是更多的工作。