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
 
     
     
    