【发布时间】:2016-09-15 16:16:04
【问题描述】:
我正在努力使用多线程来计算购物篮上有不同购物项目的客户列表之间的相关性。所以我有一个包含 1000 个客户的 pandas 数据框,这意味着我必须计算 100 万次相关性,这需要很长时间来处理
数据框的示例如下所示:
ID Item
1 Banana
1 Apple
2 Orange
2 Banana
2 Tomato
3 Apple
3 Tomato
3 Orange
这是代码的简化版本:
import pandas as pd
def relatedness (customer1, customer2):
# do some calculations to measure the relation between the customers
data= pd.read_csv(data_file)
customers_list= list (set(data['ID']))
relatedness_matrix = pd.DataFrame(index=[customers_list], columns=[customers_list])
for i in customers_list:
for j in customer_list:
relatedness_matrix.loc[i,j] = relatedness (i,j)
提前致谢!
【问题讨论】:
-
有点不清楚你在问什么。您是否认为多线程会使其足够快以至于不再“花费太长时间”?您需要多快?
-
我不确定我是否使用了正确的术语。但我需要的是一次在for循环中做尽可能多的项目,以减少处理时间。谢谢x
-
您可以在此处stackoverflow.com/questions/2846653/… 获得有关 Python 线程的一些指示,但由于全局解释器锁定,Python 中的线程通常不会提高效率。加快速度的最佳选择是用 C 或 C++ 重写耗时的函数,并将它们编译成 Python 模块,该模块的运行速度比 Python 原生代码快得多。
标签: python multithreading dataframe bigdata