当我们需要在进程之间共享状态时,如何控制Python中的内核和处理器数量

Wedoso

document中,显示了一个有关如何在进程之间共享状态的示例。为了节省时间,我将代码发布在下面的文档中。

from multiprocessing import Process, Value, Array

def f(n, a):
    n.value = 3.1415927
    for i in range(len(a)):
        a[i] = -a[i]

if __name__ == '__main__':
    num = Value('d', 0.0)
    arr = Array('i', range(10))

    p = Process(target=f, args=(num, arr))
    p.start()
    p.join()

    print num.value
    print arr[:]

我在Linux超级计算系统上编写代码,在该系统上,我可以分配固定数量的内核,并且每个节点可以分配一定数量的内核。那么,如何在此框架中编写代码分配工作人员呢?Python是否会自动充分利用内核?为了在此框架中充分利用竞争资源,分配参数的正确方法是什么?

莱辛格

可能的答案:

from multiprocessing import Process, Value, Array, Pool
import random

def f(n, a):
    n.value = 3.1415927
    a[random.randint(5)] = 0

if __name__ == '__main__':
    num = Value('d', 0.0)
    arr = Array('i', range(10))

    # you can manually set the number of workers
    workers = 5
    # or, if you want to use all cores, 
    # use the maximum number of existing cores to set workers
    # workers = cpu_count()
    p = Pool(workers)
    results = p.map(f, (num, arr))

    print num.value
    print arr[:]

在上面的代码中,最后的打印语句应打印3.1415927[0,0,0,0,0,6,7,8,9]

如果要使用流程,则必须手动设置和管理每个流程的开始和结束:

from multiprocessing import Process, Value, Array, Pool
import random

def f(n, a):
    n.value = 3.1415927
    a[random.randint(5)] = 0

if __name__ == '__main__':
    num = Value('d', 0.0)
    arr = Array('i', range(10))

    # if you want to use all cores, 
    # use the maximum number of existing cores to set workers
    workers = cpu_count()
    prcs = [Process(target=f, args=(num, arr)).start() for i in range(workers)]
    results = [i.join() for i in prcs]

    print num.value
    print arr[:]

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

并行计算中的处理器和进程之间的区别?

来自分类Dev

当我很少需要可变数据时,如何在多个线程之间共享数据?

来自分类Dev

当我们在Linux中为进程及其线程设置不同的处理器相似性时会发生什么?

来自分类Dev

try和&之间推荐使用哪种语法。当我们在Ruby on Rails中处理零值时?

来自分类Dev

我如何在 Python 中的 2 个不同进程之间共享串行端口

来自分类Dev

当我们将停止发送到 pid 1 时,docker 如何处理子进程

来自分类Dev

当我们需要在实际开发中使用$ digest()时?

来自分类Dev

在进程之间共享内核对象

来自分类Dev

当我们在android中交换钢琴类型按钮时如何使用选择器

来自分类Dev

当我们在邮递员中看到输出时,如何在 codeigniter rest 控制器中打印_r

来自分类Dev

我们可以读取和编程AMD处理器的微代码吗?

来自分类Dev

当我们创建一个新进程时,在Linux内核中的优先级分配在哪里?

来自分类Dev

如何在进程之间共享日期变量-多处理Python

来自分类Dev

当我们在浏览器中输入url并按Enter时,rails在技术上如何处理请求

来自分类Dev

当我们在浏览器中输入url并按Enter时,rails在技术上如何处理请求

来自分类Dev

分段错误,(在内核中转储)更改lpthreads中的处理器数量时

来自分类Dev

我们什么时候需要在信号处理程序中再次建立信号函数?

来自分类Dev

为什么我们需要在C中的并发服务器中为每个客户端创建不同的进程?

来自分类Dev

我们是否需要使用NSURLSessionDataTask和NSMutableURLRequest处理进程的连接超时?

来自分类Dev

python服务器中进程之间的共享列表

来自分类Dev

Asyncio:当我们需要使用异步方法时,如何在__del__方法中清理类的实例

来自分类Dev

如何在C#和Python进程之间共享字节数组的内存

来自分类Dev

当我们需要使用curveTo()和setCurve()时

来自分类Dev

Python:我们需要在导入内置模块时添加异常块吗?

来自分类Dev

在内核块执行之间,GPU多处理器的共享内存会如何处理?

来自分类Dev

如何在python的进程之间共享数据?

来自分类Dev

如何设置内核代码的默认ARM处理器状态?

来自分类Dev

在Python中的进程之间共享许多队列

来自分类Dev

在python中的多个进程之间共享类变量

Related 相关文章

  1. 1

    并行计算中的处理器和进程之间的区别?

  2. 2

    当我很少需要可变数据时,如何在多个线程之间共享数据?

  3. 3

    当我们在Linux中为进程及其线程设置不同的处理器相似性时会发生什么?

  4. 4

    try和&之间推荐使用哪种语法。当我们在Ruby on Rails中处理零值时?

  5. 5

    我如何在 Python 中的 2 个不同进程之间共享串行端口

  6. 6

    当我们将停止发送到 pid 1 时,docker 如何处理子进程

  7. 7

    当我们需要在实际开发中使用$ digest()时?

  8. 8

    在进程之间共享内核对象

  9. 9

    当我们在android中交换钢琴类型按钮时如何使用选择器

  10. 10

    当我们在邮递员中看到输出时,如何在 codeigniter rest 控制器中打印_r

  11. 11

    我们可以读取和编程AMD处理器的微代码吗?

  12. 12

    当我们创建一个新进程时,在Linux内核中的优先级分配在哪里?

  13. 13

    如何在进程之间共享日期变量-多处理Python

  14. 14

    当我们在浏览器中输入url并按Enter时,rails在技术上如何处理请求

  15. 15

    当我们在浏览器中输入url并按Enter时,rails在技术上如何处理请求

  16. 16

    分段错误,(在内核中转储)更改lpthreads中的处理器数量时

  17. 17

    我们什么时候需要在信号处理程序中再次建立信号函数?

  18. 18

    为什么我们需要在C中的并发服务器中为每个客户端创建不同的进程?

  19. 19

    我们是否需要使用NSURLSessionDataTask和NSMutableURLRequest处理进程的连接超时?

  20. 20

    python服务器中进程之间的共享列表

  21. 21

    Asyncio:当我们需要使用异步方法时,如何在__del__方法中清理类的实例

  22. 22

    如何在C#和Python进程之间共享字节数组的内存

  23. 23

    当我们需要使用curveTo()和setCurve()时

  24. 24

    Python:我们需要在导入内置模块时添加异常块吗?

  25. 25

    在内核块执行之间,GPU多处理器的共享内存会如何处理?

  26. 26

    如何在python的进程之间共享数据?

  27. 27

    如何设置内核代码的默认ARM处理器状态?

  28. 28

    在Python中的进程之间共享许多队列

  29. 29

    在python中的多个进程之间共享类变量

热门标签

归档