首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Linux中用信号量阻塞cpu是可能的吗?(Python)

在Linux中用信号量阻塞cpu是可能的吗?(Python)
EN

Stack Overflow用户
提问于 2013-11-21 04:57:22
回答 2查看 259关注 0票数 3

我知道您可以通过信号量限制有限资源的使用,但是我如何才能将其应用于CPU (或内核,如果这是明智的做法)。

我有多个线程同时在一个处理器上运行。但是在其中一个线程上,我想运行一段代码,在那里我发送一个信号,并且我需要对信号返回所需的时间进行计时。信号似乎非常失真,而在过去,这些信号是好的。我确信硬件运行得很好,所以我认为添加这些额外的线程会导致响应脉冲的时间不准确。这是一个非常弱的cpu。我想试着阻止cpu做任何事情,除了检索和计时返回脉冲;我相信这应该是可能的。

下面是我想要实现的目标的简要介绍:

代码语言:javascript
复制
-multiple threads are running
-on the thread with the pulse signaling a pulse has been sent
 --> stop cpu from processing other threads
 --> return pulse has been received
 --> cpu is now free to continue it's work

我将在脉冲之间插入sleep()方法,这样cpu就不会被其他线程锁定。

我知道信号量是如何工作的,问题是,我如何让它在cpu上工作?

EN

回答 2

Stack Overflow用户

发布于 2013-11-21 05:51:14

CPython不能很好地处理多核系统上的CPU线程,除非您在操作系统中禁用除一个内核之外的所有内核。

下面是关于这个主题的演示文稿:https://www.youtube.com/watch?v=ph374fJqFPE

对于I/O受限的多线程工作负载,CPython做得很好,但即使是一个CPU受限的线程也会在多核上搞得一团糟。

我建议您考虑使用多处理而不是多线程,除非您是纯粹的I/O限制。或者使用Jython或IronPython,它们的线程都很好。

票数 1
EN

Stack Overflow用户

发布于 2013-11-21 05:57:23

处理这类事情的正常方法是调整线程的优先级。不幸的是,在Python中似乎无法做到这一点。一个previous question详细解释了为什么你不能这么做。我不确定我是否相信GIL会妨碍我的说法。我没有研究过GIL的实现,但实现它的一个明显的方法是使用本机线程工具的低级锁定原语(互斥等)。通常情况下,这些都会考虑线程优先级。不幸的是,如果你不能控制优先级,这似乎是没有意义的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20106864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档