如何将多处理应用于滑动窗口

用户名

我正在创建一百万个值,并使用一个滑动窗口将它们分为训练和测试,该滑动窗口使用长度为1000个值的窗口,每次滑动一个值。

例如,第一个过程是将前1000个值拆分为火车,然后将1001st值拆分为测试。第二个过程在火车中的值为2到1001,在测试中的值为1002nd,依此类推。

运行脚本需要76.28秒。我曾经timeit测量过。

现在,我想通过使用多个处理器运行滑动窗口来减少此时间。我用Poolmultiprocessing有4个CPU,但它并没有改变,在所有的性能。我想知道有什么更好的方法吗?

码:

from multiprocessing import Process
from multiprocessing import Pool
import numpy as np
import pandas as pd
from timeit import default_timer as timer

start = timer()

data = list(range(1_000_000))
window_size = 1_000
splits = []

def sw(window_size, data):
    for i in range(window_size, len(data)):
        train = np.array(data[i - window_size:i])
        test = np.array(data[i:i + 1])
        splits.append(('TRAIN:', train, 'TEST:', test))

#  sw(window_size, data)
#  print(splits)

if __name__ == '__main__':
    p= Pool(4)
    p = Process(target=sw, args=(window_size, data))
    p.start()
    p.join()

end = timer()
print(end - start)
亚历克斯·奈

实际上,正如评论所指出的那样,您要做的就是创建一个名为的Pool p,然后将该变量重新分配给过程结果。我稍微重写了您的滑动窗口功能。并行化独立任务的一种简单方法是,指定要对一项执行的操作,然后仅使用地图函子。Intel core [email protected](具有超线程的双核)上执行基准测试

from multiprocessing import Process
from multiprocessing import Pool
import numpy as np
from timeit import default_timer as timer

NUM_EL = 1_000_000
WINDOW_SIZE = 1000
DATA = list(range(NUM_EL))


def window(start_idx, window_size=WINDOW_SIZE, data=DATA):
    _train = np.array(data[start_idx:start_idx + window_size])
    _test = np.array(data[start_idx + window_size + 1])
    # return something useful here
    return start_idx


if __name__ == '__main__':
    STARTS = list(range(NUM_EL - WINDOW_SIZE - 1))

    start = timer()
    result_single = list(map(window, STARTS))
    end = timer()
    print("Single core: ", end - start)

    start = timer()
    with Pool(4) as p:
       result_multi = p.map(window, STARTS)

    end = timer()
    print(result_single == result_multi)
    print("Multiprocessing: ", end - start)
>>> Single core:  99.9821742
>>> Multiprocessing:  38.71327739999998

注意:此代码很可能在使用的任何环境中均不起作用IPython

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将纹理应用于脸部?

来自分类Dev

如何将引理应用于2个假设

来自分类Dev

如何将纹理应用于带有阴影的文本

来自分类Dev

(SFML 2.4.2) 如何将一个纹理应用于多个精灵

来自分类Dev

如何将纹理应用于使用挤压制作的对象

来自分类Dev

如何将图片中的纹理应用于文本

来自分类Dev

如何将独特的纹理应用于 DodecahedronGeometry 的每一面?

来自分类Dev

如何将定理应用于CoQ中有限制的定义

来自分类Dev

如何将定理应用于CoQ中有限制的定义

来自分类Dev

如何将groupBy和聚合函数应用于PySpark DataFrame中的特定窗口?

来自分类Dev

如何将脚本应用于所有模态弹出窗口

来自分类Dev

如何使用three.js r67将径向纹理应用于环?

来自分类Dev

将纹理应用于旋转的圆柱体

来自分类Dev

将傅立叶移位定理应用于复信号

来自分类Dev

如何将光标指针属性应用于(单击)事件处理程序?

来自分类Dev

如何将后处理方面应用于网站项目?

来自分类Dev

jQuery处理程序-如何将操作应用于动态添加的元素

来自分类Dev

如何将点击处理程序应用于模板内的多个元素-EXTJS

来自分类Dev

如何将弧度应用于多个调整大小的拖动处理程序

来自分类Dev

将函数应用于具有多处理功能的 DataFrame 时设置新列名

来自分类Dev

R:如何将用户定义的函数应用于数据表的多列并在滑动窗口(即移动平均值)中求值

来自分类Dev

如何将样式表应用于PyQt中的自定义窗口小部件

来自分类Dev

如何将休眠验证应用于字符类型?

来自分类Dev

如何将CSS应用于Javascript添加的元素

来自分类Dev

如何将AND应用于列表的所有元素?

来自分类Dev

如何将内核应用于栅格图像

来自分类Dev

如何将CSS样式仅应用于文本

来自分类Dev

如何将CGAffineTransform应用于CGPoint

来自分类Dev

如何将.patch文件应用于项目?

Related 相关文章

  1. 1

    如何将纹理应用于脸部?

  2. 2

    如何将引理应用于2个假设

  3. 3

    如何将纹理应用于带有阴影的文本

  4. 4

    (SFML 2.4.2) 如何将一个纹理应用于多个精灵

  5. 5

    如何将纹理应用于使用挤压制作的对象

  6. 6

    如何将图片中的纹理应用于文本

  7. 7

    如何将独特的纹理应用于 DodecahedronGeometry 的每一面?

  8. 8

    如何将定理应用于CoQ中有限制的定义

  9. 9

    如何将定理应用于CoQ中有限制的定义

  10. 10

    如何将groupBy和聚合函数应用于PySpark DataFrame中的特定窗口?

  11. 11

    如何将脚本应用于所有模态弹出窗口

  12. 12

    如何使用three.js r67将径向纹理应用于环?

  13. 13

    将纹理应用于旋转的圆柱体

  14. 14

    将傅立叶移位定理应用于复信号

  15. 15

    如何将光标指针属性应用于(单击)事件处理程序?

  16. 16

    如何将后处理方面应用于网站项目?

  17. 17

    jQuery处理程序-如何将操作应用于动态添加的元素

  18. 18

    如何将点击处理程序应用于模板内的多个元素-EXTJS

  19. 19

    如何将弧度应用于多个调整大小的拖动处理程序

  20. 20

    将函数应用于具有多处理功能的 DataFrame 时设置新列名

  21. 21

    R:如何将用户定义的函数应用于数据表的多列并在滑动窗口(即移动平均值)中求值

  22. 22

    如何将样式表应用于PyQt中的自定义窗口小部件

  23. 23

    如何将休眠验证应用于字符类型?

  24. 24

    如何将CSS应用于Javascript添加的元素

  25. 25

    如何将AND应用于列表的所有元素?

  26. 26

    如何将内核应用于栅格图像

  27. 27

    如何将CSS样式仅应用于文本

  28. 28

    如何将CGAffineTransform应用于CGPoint

  29. 29

    如何将.patch文件应用于项目?

热门标签

归档