如何在OBSPY流上应用多处理?

2024-04-26 12:02:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我用OBSPY导入的文件有207个记录道形成一个流,每个记录道有30k个样本。每条记录道的数据由地震记录道数据[trace\u number]数据访问,是一个一维数组。你知道吗

我使用的函数以trace和int作为参数: 库尔特1d(信号1d,样本)。它返回相同大小的一维数组。你知道吗

目前,我正在207个跟踪上使用for循环来对每个跟踪运行函数:

def kurt_nd(signal_nd, samples):

    kurt_array = signal_nd.copy()
    for index in range(207):
       kurt_array[index].data = kurt_1d(signal_1d=signal_nd[index].data,samples=samples)
    return(kurt_array)

如何使用多处理在整个流(207个记录道)上应用kurt\u 1d(signal\u 1d,samples)函数来提高速度?目标是在原始流副本的相应索引中存储每个生成的一维数组。你知道吗


Tags: 数据函数fordataindexsignal记录trace
1条回答
网友
1楼 · 发布于 2024-04-26 12:02:07

您可以定义一个进程池来运行函数。 示例代码如下:

import multiprocessing as mp
import os

num_proc = os.cpu_count() # to get the number of cores on your computer

pool = mp.Pool(processes=num_proc)
proc = [pool.appy_async(kurt_nd,args=[i,samples]) for i in traces] # map the function to the processes
results = [p.get() for p in proc] # retrieve the results from your processes 

相关问题 更多 >