我有一个可以使用多核处理的庞大数据集。我有一个数据帧,每个行都有序列和块大小。
我编写了一个循环,提取每行的序列和块大小,并从名为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)