如何通过线程限制核心数量

2024-01-02

下面发布的代码启动一个线程,在我的 macbookpro 上启动 4 个核心。 有没有办法限制线程应使用多少个核心?

    import threading

    import logging
    logging.basicConfig(level=logging.DEBUG, format='(%(threadName)s) %(message)s',)

    def func():
        logging.debug('starting')
        m=0
        for i in range(500000000):
            m+=i
        logging.debug('exiting') 

    thread = threading.Thread(target=func)
    thread.start()

    logging.debug('completed')

这是日志:

Loaded sitecustomize.py
(Thread-1) starting
(MainThread) completed
(Thread-1) exiting
[Finished in 128.0s]

有多线程和多处理。

您可以将进程绑定到 cpu 核心,但不能将线程绑定到核心。

进程和线程之间的主要区别在于创建时间,线程产生速度更快并且它们在相同的内存空间中运行,而进程具有单独的内存。

import multiprocessing as mp
import psutil


def spawn():
    procs = list()
    n_cpus = psutil.cpu_count()
    for cpu in xrange(n_cpus):
        affinity = [cpu]
        d['affinity'] = affinity
        p = mp.Process(target=run_child, kwargs=d)
        p.start()
        procs.append(p)
    for p in procs:
        p.join()
        print('joined')

def run_child(affinity):
    proc = psutil.Process()  # get self pid
    print('PID: {pid}'.format(pid=proc.pid))
    aff = proc.cpu_affinity()
    print('Affinity before: {aff}'.format(aff=aff))
    proc.cpu_affinity(affinity)
    aff = proc.cpu_affinity()
    print('Affinity after: {aff}'.format(aff=aff))


if __init__ == '__main__':
    spawn()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过线程限制核心数量 的相关文章

随机推荐

  • 使用 XSLT 将名称/值对 XML 转换为元素

    我有一个由名称 值对组成的 XML 文件 我需要使用 xslt 1 的格式 其中每个 名称 都是一个元素名称 内容中包含值 这是一个例子 Input
  • 休眠的替代方案[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 为 jQuery UI 按钮创建 AngularJS 指令

    Update 小提琴w 完整的解决方案 http jsfiddle net langdonx VXBHG http jsfiddle net langdonx VXBHG 为了比较 KnockoutJS 和 AngularJS 我浏览了Kn
  • 如何调用另一个文件中的函数?

    例如 我有一个文件 error status php 其中包含一个函数 function validateHostName hostName if strpbrk hostName lt gt FALSE ctype digit hostN
  • WPF:不透明度和 MouseEnter 事件

    作为图表的一部分 我正在绘制一些重叠的形状 每个形状都有Opacity 0 5 像这儿
  • 如何更改microk8s kubernetes存储位置

    您好 我在 Ubuntu 18 单节点机器上安装了 Microk8s Kubernetes 我想知道如何更改存储位置 我希望所有容器 pod 都在 dev sdc 卷中创建 该卷是 ext4 格式而不是默认位置 在 MicroK8s 中 容
  • Swift / 在视图控制器中启用编辑模式

    由于 UI 元素 我创建了 View Controller 里面有一个TableView 但我无法启用编辑模式 我尝试了几种方法都没有解决 但使用 TableView Controller 就没有问题了 我尝试过的 override fun
  • 如何在 Android 应用程序中实现 Java 编译器和 DEX 转换器?

    在试图寻找答案的同时Android Jasper 报告 https stackoverflow com q 7085943 1482507我发现还有另外两个问题需要回答 我被要求作为问题而不是答案提出 我现在的问题是 是否有任何编译器可以直
  • System.Reflection.TargetInitationException :调用目标已引发异常

    我正在尝试自动化reactjs应用程序以及我们项目使用的基于C 和protractor net构建的框架 在任何单击或断言函数之后 我都会收到以下错误 但代码中定义的操作会成功执行 System Reflection TargetInvoc
  • CNN 上的快速损失收敛意味着什么?

    我正在两个不同的深度学习库 Caffe e Tensorflow 中训练两个 CNN AlexNet e GoogLeNet 该网络由每个图书馆的开发团队实施 here https github com BVLC caffe tree ma
  • HTML Button 的 jQuery 函数在使用 MVC FileResult 时遇到问题

    我打算让这个函数调用我的 MVC 操作方法来返回 CSV 报告 function exportButton click function get curReport GetCSVReport 如果我制作一个像下面的代码一样的按钮 那么当单击
  • 我的 docker 镜像是否需要自己的 consul 客户端实例?

    我有一个 dockerized 应用程序 分为几个容器 一些前端和后端服务器 负载均衡器 mysql elasticsearch 等 负载均衡器的配置需要知道哪些容器已启动 因此我使用 Consul 服务发现来注册服务 但我不太确定在每个
  • 大型 MySQL 表

    对于我正在开发的Web应用程序 我需要存储大量记录 每条记录将由一个主键和一个 短的 字符串值组成 我期望有大约 100GB 的可用存储空间 并且希望能够全部使用 记录会被频繁地插入 删除和读取 我必须使用MySQL数据库 数据完整性并不重
  • PHP + MySQL - 从数据库自动完成而不从表获取数据

    我正在进行一个关于讨论室服务的小型大学项目 现在我的任务是实现订购名称的自动完成功能 我已经用谷歌搜索了一些教程 我不确定出了什么问题 当我尝试输入名称时 前面没有输入任何数据 这是我的表单代码
  • 新 iOS 的应用程序图标大小

    我意识到 iOS 7 尚未发布 不应该被讨论 但我无法在任何地方找到这个问题的答案 iOS 7 几天后就会发布 我提交了 iOS 7 的应用程序 收到一条警告 说我缺少图标大小 120 X 120 这显然是 iOS 7 中图标的新标准大小
  • C# JsonConvert.DeserializeAnonymousType 失败

    我正在尝试反序列化 Azure 函数应用程序中的字符串输入 我的输入是 messageid 1 deviceid Android temperature 20 0 humidity 47 0 eventprocessedutctime 20
  • random.choices 带有加权选项输出

    import random a 1 b 2 c 3 print random choices a b c 50 3 1 上面的代码输出 1 2 或 3 有人可以解释为什么输出有方括号吗 Because random choices popu
  • 如何通过 aws Java SDK 公开 S3 对象?

    如何通过 AWS Java SDK 公开 S3 对象 具体来说 通过 Java AWS SDK 的哪些 API 方法可用于在上传对象时将其公开 在一篇文章中找到了答案亚马逊AWS论坛 https forums aws amazon com
  • Tomcat的BIO Connector和NIO Connector有什么区别?

    我想了解tomcat NIO连接器的内部结构 当我们创建一个实现 CometProcessor 的 servlet 时 线程到底是如何使用的 它仍然是每个连接一个线程吗 据我读到 对话是这样的 客户端连接到 servlet Servlet
  • 如何通过线程限制核心数量

    下面发布的代码启动一个线程 在我的 macbookpro 上启动 4 个核心 有没有办法限制线程应使用多少个核心 import threading import logging logging basicConfig level loggi