如何使用 python 中的 iterrows 多核处理 for 循环

How to multicore processing a for loop with iterrows in python

我有一个可以使用多核处理的海量数据集。 我有一个数据框,每行都有序列和块大小。

我写了一个循环来提取每行的序列和块大小,并从名为 localcider 的包中的函数计算分数。

我不知道如何运行它并行。

有人可以帮忙吗?

omega = []
AA=list('FYW')
for i, row in df.iterrows():
    seq = df['IDRseq'][i]
    b = df['bsize'][i]
    bsize = [b-1,b]
    SeqOb = SequenceParameters(seq,blobsize=bsize)
    omega.append(SeqOb.get_kappa_X(AA))
    
s1 = pd.Series(omega, name='omega')
df = df.assign(omega=s1.values)

经过大量谷歌搜索,我遇到了 pandarallel。

我认为这是做我想做的最直观的方式。

我发布代码以供将来参考。

from pandarallel import pandarallel

pandarallel.initialize(progress_bar=True, nb_workers = n)
# nb_workers = n ; I set the nb_workers fo CPU core - 1 so the system is more stable

def something(x):
 #do stuff
    return result

df['result'] = df.parallel_apply(something, axis=1)