Here is the code I am using:
import pandas as pd
import sys, multiprocessing
train_data_file = '/home/simon/ali_bigdata/train_data_user_2.0.csv'
user_list_file = '/home/simon/ali_bigdata/user_list.txt'
def feature_extract(list_file, feature_extract_func):
tmp_list = [line.strip() for line in open(list_file)]
pool = multiprocessing.Pool(multiprocessing.cpu_count())
results_list = pool.map(feature_extract_func, tmp_list)
for tmp in results_list:
for i in tmp:
print i,"\t",
print "\n"
pool.close()
pool.join()
def user_feature(tmp_user_id):
sys.stderr.write("process user " + tmp_user_id + " ...\n")
try:
tmp_user_df = df_user.loc[int(tmp_user_id)]
except KeyError:
return [tmp_user_id, 0, 0, 0.0]
else:
if type(tmp_user_df) == pd.core.series.Series:
tmp_user_click = 1
else:
(tmp_user_click, suck) = tmp_user_df.shape
tmp_user_buy_df = tmp_user_df.loc[tmp_user_df['behavior_type'] == 4]
if type(tmp_user_buy_df) == pd.core.frame.DataFrame:
tmp_user_buy = 1
else:
(tmp_user_buy, suck) = tmp_user_buy_df.shape
return [tmp_user_id, tmp_user_click, tmp_user_buy, 0.0 if tmp_user_click == 0 else float(tmp_user_buy)/tmp_user_click]
df = pd.read_csv(train_data_file, header=0)
df_user = df.set_index(['user_id'])
feature_extract(user_list_file, user_feature)
The error I'm getting is:
process user 102761946 ...
process user 110858443 ...
process user 131681429 ...
Traceback (most recent call last):
File "extract_feature_2.0.py", line 53, in <module>
feature_extract(user_list_file, user_feature)
File "extract_feature_2.0.py", line 13, in feature_extract
results_list = pool.map(feature_extract_func, tmp_list)
File "/usr/lib/python2.7/multiprocessing/pool.py", line 251, in map
return self.map_async(func, iterable, chunksize).get()
File "/usr/lib/python2.7/multiprocessing/pool.py", line 558, in get
raise self._value
KeyError: 'the label [False] is not in the [index]'
it occurs when the program runs for a while.
So what does this error mean and how can I multiprocess this map function?
here are the input data format
user_id,item_id,behavior_type,user_geohash,item_category,date,time
99512554,37320317,3,94gn6nd,9232,2014-11-26,20
9909811,266982489,1,,3475,2014-12-02,23
98692568,27121464,1,94h63np,5201,2014-11-19,13