如何在python中使用iterrows对for循环进行多核处理



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

我编写了一个循环,提取每行的序列和块大小,并从名为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)

相关内容

  • 没有找到相关文章

最新更新