我几乎没有以numpy.arrays数组向量和字典。我们把它们称为D,i,i=1..4。除此之外,我还有一个csv文件F1.csv,它只有一列。你知道吗
我已经编写了一个python代码p,它将读取F1.csv中的行。对于每一行,使用Di上的读取操作,它将生成一些必须写入F2.csv的数据。这段代码运行良好,并给出了预期的结果。你知道吗
然而,Di是巨大的,并且p仅使用一个CPU核。如何让P使用两个内核--一个内核用于F1.csv的上半部分,另一个用于下半部分?你知道吗
我的代码太复杂,无法在这里编写,因此我给出了一个玩具版本:
# Code for generating D1
...
# Code for generating D2
...
# Code for generating D3
...
# Code for generating D4
...
# P starts
F1 = csv.reader(open('data/F1.csv'), delimiter='\t')
F2 = open('data/F2.csv', 'wb')
for row in F1:
toBeWritten = { ... some read operations on Di ... } #detailed code is given below in Edit 2
F2.write(toBeWritten)
# P ends
如何修改“#p start”和“#p ends”之间的代码,以便线程从F1.csv中读取不相交的行,计算以独立写入,然后写入F2.csv?你知道吗
我是Python多线程的新手,因此如果能给出一个简单地修改代码以完成任务的答案,我将不胜感激。你知道吗
编辑1:
请注意,瓶颈是生成与F2的每一行相对应的待写入。D1是一个1.5M x 1.3M的稀疏矩阵,读作scipy.sparse.lil\u矩阵. 生成以编写需要添加此矩阵的一些行。这是真正的罪魁祸首!你知道吗
编辑2:
下面的代码中包含了生成以编写的实际代码。你知道吗
# D1 is a 1.5M x 1.3M sparse matrix, read as scipy.sparse.lil_matrix.
# D2 is a 1.5M x 111 matrix, read as numpy.array
# for row in F1:
user_id = row[0]
clust = D2[user_id, 110]
neighbors = D2[ D2[:, 110] == clust][:,1]
score = np.zeros(1300000)
for neigh in neighbors:
score = score + D1 [neigh, :] # the most expensive operation
toBeWritten = np.argsort(score)[:,::-1].A[0,:]
不确定线程是否可以帮助您解决特定的问题,但您可以这样做:
如果线程没有帮助,您可能需要尝试多处理。你知道吗
相关问题 更多 >
编程相关推荐