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