我有一个9位整数的列表,我试图通过一个函数来执行所有“良好”策略并将它们附加到另一个列表中。我是多线程的新手,使用它时,唯一整数的数量从410,136增至3,334,192。
由于某种原因,当我通过多线程池将其发送时,它将每个9位整数分解为一位。
这是功能:
record_id = df_tabular['policy'].unique().astype('str')
def build_safe_list(list_id):
for record_i in list_id:
try:
int_record = int(record_i)
safe_record_id_list.append(int_record)
#print(record_i)
except:
#print(record_i)
bad_record_id.append(record_i)
#build_safe_list(record_id)
当我在没有注释build_safe_list(record_id)
的情况下运行它时,就可以了。
但是,当我运行以下代码时,它像上面描述的那样混乱:
safe_record_id_list = []
bad_record_id = []
from multiprocessing.pool import ThreadPool
num_thread = 16
pool = ThreadPool(num_thread)
results = pool.imap_unordered(build_safe_list, record_id)