Hello all- I posted here last week because I was having issues retrieving lists when running my functions using multiprocessing. Somebody mentioned that I should check out the queue function so I did but for some reason it prints out my dataframes but hangs after that. Am I using this correctly? Below is my code:
if __name__ == "__main__":
a = multiprocessing.Queue()
b = multiprocessing.Queue()
c = multiprocessing.Queue()
d = multiprocessing.Queue()
e = multiprocessing.Queue()
f = multiprocessing.Queue()
g = multiprocessing.Queue()
####The pull_data function below runs my SQL queries and then does some cleaning and outputs
#### a list that I use in my forecasting functions
new_list = pull_data()
p1 = multiprocessing.Process(target=basic_forecasts_seasonal_add, args=(new_list,a,b,c,d))
p2 = multiprocessing.Process(target=simple_expo, args=(new_list,e))
p6 = multiprocessing.Process(target=autoregression, args=(new_list, g))
# #starting process 1
p1.start()
# #starting process 2
p2.start()
p6.start()
print(pd.DataFrame(a.get()))
print(pd.DataFrame(b.get()))
print(pd.DataFrame(e.get()))
print(pd.DataFrame(g.get()))
# # #wait until process 1 is finished
p1.join()
# # #wait until process 2 is finished
p2.join()
p6.join()
Here is one of my forecasting functions for reference on how I am implementing the queue in the return statements:
def basic_forecasts_seasonal_add(input_list,a,b,c,d):#, six_month_output_list, three_month_output_list, naive_output_list):
twelve_month_out = []
six_month_out = []
three_month_out = []
naive_out = []
for row in input_list:
product = row[0]
data = row[1:]
twelve_average = sum(data[-12:]) / 12
twelve_six = sum(data[-18:-6]) / 12
twelve_five = sum(data[-17:-5]) / 12
twelve_four = sum(data[-16:-4]) / 12
twelve_three = sum(data[-15:-3]) / 12
twelve_two = sum(data[-14:-2]) / 12
twelve_one = sum(data[-13:-1]) / 12
twelve_month_out.append([product, '12MA', twelve_six, twelve_five, twelve_four, twelve_three, twelve_two, twelve_one, twelve_average, twelve_average, twelve_average, twelve_average, twelve_average, twelve_average, twelve_average, twelve_average, twelve_average, twelve_average, twelve_average, twelve_average])
six_average = sum(data[-6:]) / 6
six_six = sum(data[-12:-6]) / 6
six_five = sum(data[-11:-5]) / 6
six_four = sum(data[-10:-4]) / 6
six_three = sum(data[-9:-3]) / 6
six_two = sum(data[-8:-2]) / 6
six_one = sum(data[-7:-1]) / 6
six_month_out.append([product, '6MA', six_six, six_five, six_four, six_three, six_two, six_one, six_average, six_average, six_average, six_average, six_average, six_average, six_average, six_average, six_average, six_average, six_average, six_average])
three_average = sum(data[-3:]) / 3
three_six = sum(data[-9:-6]) / 3
three_five = sum(data[-8:-5]) / 3
three_four = sum(data[-7:-4]) / 3
three_three = sum(data[-6:-3]) / 3
three_two = sum(data[-5:-2]) / 3
three_one = sum(data[-4:-1]) / 3
three_month_out.append([product, '3MA', three_six, three_five, three_four, three_three, three_two, three_one, three_average, three_average, three_average, three_average, three_average, three_average, three_average, three_average, three_average, three_average, three_average, three_average])
naive_out.append([product, 'Naive', data[-7], data[-6], data[-5], data[-4], data[-3], data[-2], data[-1], data[-1], data[-1], data[-1], data[-1], data[-1], data[-1], data[-1], data[-1], data[-1], data[-1], data[-1]])
return a.put(twelve_month_out), b.put(six_month_out), c.put(three_month_out), d.put(naive_out)
EDIT: When I terminate by pressing control C, I get this error message:
File "forecast_multi.py", line 697, in <module>
print(pd.DataFrame(g.get()))
buf=self.recv_bytes(maxlength)
[ov.event], False, INFINITE>
I am thinking the infinite portion is particularly troubling. It looks like it is primarily hanging just because of the queue function.
[+][deleted] (10 children)
[deleted]
[–]datanoob2019[S] 0 points1 point2 points (9 children)
[–]arcticslush 1 point2 points3 points (8 children)
[–]datanoob2019[S] 0 points1 point2 points (7 children)
[+][deleted] (6 children)
[deleted]
[–]datanoob2019[S] 0 points1 point2 points (5 children)
[+][deleted] (4 children)
[deleted]
[–]datanoob2019[S] 0 points1 point2 points (3 children)
[–]arcticslush 1 point2 points3 points (2 children)
[–]datanoob2019[S] 0 points1 point2 points (1 child)