在Python中重复线程

时间:2013-01-22 00:56:35

标签: python linux

我正在尝试在4个核心上运行总共8个线程。

通过设置亲和力,我将每组2个线程绑定到每个核心。

0,1 -> core A
2,3 -> core B
4,5 -> core C
6,7 -> core D

我能够轮询线程以检查它们是否正在运行。我也能够收集它所给予的时间,(e)和精确收集(p)形成事件的时间。 我知道集合中的两个线程中的哪一个死了(死了,我的意思是,执行时间结束了)。可能存在线程0或线程1彼此比较长的情况。

在任何一种情况下,即当线程0或线程1较长时,我想重复较短的线程,直到更大的线程结束。

以前,当我在整个系统上每个核心只有两个线程时。我以前做过手动检查,如果其中任何一个线程已经死了......继续运行它直到另一个线程也死了。

但这带来了大量冗余和效率损失(因为我使用的是IF语句)

如果我想为每个核心的两个线程/两个以上线程扩展它,那么每个核心都有两个/两个以上。我们怎么样?

I need ideas so that we can discuss on that.

这是我得到的: 作为一个例子,采取" ted" "会谈"并且作为Core A上的两个线程。假设ted是两个线程中较短的一个。 我们拥有的数据:开始,结束和数据收集时间的时间。 我们可以计算线程ted的最终开始和线程会话之间的时间差。

TED_TIME_DIFF = 100ms

但是线程会谈的时间段不断增加(从收集时间(c)的计算中检查)。假设收集时间是1ms 例如它可以TALKS_TIME_DIFF = 110ms下一个ms是111ms ......等等。

我们可以继续重申特德,直到会谈时间差异很大。

Scripting language: Python 2.7
OS: Linux
Kernel:2.6.xx
using SPEC CPU BENCHMARK threads - if that is any importance
如果你可以帮助我,我会很高兴。

1 个答案:

答案 0 :(得分:1)

  

我正在尝试在4个核心上运行总共8个线程。 *

除非你(a)产生多个进程(不是线程)或(b)使用没有Global Interpreter Lock的备用解释器,否则你永远不会使用Python运行超过1个核心。 / p>

标准Python不会同时在多个线程中运行python代码。