小编Din*_*ari的帖子

带有rusage的进程/线程的不可能的CPU时间

我正在计算进程/线程正在使用的cpu时间之间的增量,在某个函数的调用之间.

我为进程cpu时间获得了不可能的值,有时候下一次调用返回较小的cpu时间,这是不可能的.

这是我用来计算cpu时间的代码:

  u64 CpuTime::calculateCpuTime(bool a_thread)
  {
    struct rusage l_rusage;
    int retVal;
    if(a_thread)
    {
      retVal = getrusage(1, &l_rusage); //1 = RUSAGE_THREAD
    }
    else
    {
      retVal = getrusage(0, &l_rusage); //0 = RUSAGE_SELF
    }
    ASSERT(retVal==0);

    u64 userUSeconds = (static_cast<u64>(l_rusage.ru_utime.tv_sec)*1000000)+
      (static_cast<u64>(l_rusage.ru_utime.tv_usec));

    u64 systemUSeconds = (static_cast<u64>(l_rusage.ru_stime.tv_sec)*1000000)+
      (static_cast<u64>(l_rusage.ru_stime.tv_usec));

    if(a_thread)
    {
      return userUSeconds + systemUSeconds;
    }
    return (userUSeconds + systemUSeconds) / ACE_OS::num_processors_online();
  }
Run Code Online (Sandbox Code Playgroud)

计算检索它的函数也是异步的,一次不能超过1个线程访问它.

这是不可能的输出(过程)的一个例子:

2016/03/23 13:39:05.187 - #2 - 15471/15055 - ThreadDeltaCpuTime = 6000 ThreadCpuTime = 46756013 ProcessCpuTime = 39820759 deltaProcessCpuTime = 250

2016/03/23 13:39:05.386 …

c c++ linux multithreading ace

6
推荐指数
1
解决办法
368
查看次数

尝试通过 FormattedTB 使用 pdb 时出现 NoneType 错误

当执行以下代码时:

from IPython.core import ultratb
sys.excepthook = ultratb.FormattedTB(mode='Verbose', color_scheme='Linux', call_pdb=1)
Run Code Online (Sandbox Code Playgroud)

为了捕获异常,我收到以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/dinari/miniconda3/envs/testenv/lib/python3.8/site-packages/IPython/core/ultratb.py", line 994, in __init__
    VerboseTB.__init__(self, color_scheme=color_scheme, call_pdb=call_pdb,
  File "/Users/dinari/miniconda3/envs/testenv/lib/python3.8/site-packages/IPython/core/ultratb.py", line 638, in __init__
    TBTools.__init__(
  File "/Users/dinari/miniconda3/envs/testenv/lib/python3.8/site-packages/IPython/core/ultratb.py", line 242, in __init__
    self.pdb = debugger_cls()
TypeError: 'NoneType' object is not callable
Run Code Online (Sandbox Code Playgroud)

使用 python 3.8.2 和 IPython 8.4.0

pdb 否则工作正常。

有解决这个问题的想法吗?

python ipython pdb

6
推荐指数
1
解决办法
90
查看次数

Source Insight //TODO 评论

我最近开始使用 Source Insight,为了获得正确的 //TODO - 注释,您需要编写// TODO (带有额外的空格)。

我尝试在配置中查找删除此额外空间的方法,但找不到它,并且无法习惯用额外空间编写它。

有办法解决这个问题吗?还是应该拥抱这一点,然后慢慢地,学会珍惜?

c++ source-insight

4
推荐指数
1
解决办法
2299
查看次数

scanf一个大的十六进制值

我尝试使用scanf从用户获取大十六进制数字(12个字符)时遇到问题。

它似乎只能获取最后8个字符,例如-ABFFFFFFFF将变为0000FFFFFFFF。

这是我的代码-

unsigned long long address;
scanf("%x",&address);
printf("Address: %#014x", address);
Run Code Online (Sandbox Code Playgroud)

对于此输入:“ ABFFFFFFFF”,输出为:

地址:0x0000ffffffff

我试过用scanf格式播放,但无济于事。

c hex scanf

1
推荐指数
1
解决办法
1595
查看次数

标签 统计

c ×2

c++ ×2

ace ×1

hex ×1

ipython ×1

linux ×1

multithreading ×1

pdb ×1

python ×1

scanf ×1

source-insight ×1