python程序块占用6%的CPU?

2024-05-19 01:46:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个程序,它使用这个library来做一些非常简单的事情,比如这样

   receiver = multicast.MulticastUDPReceiver ("192.168.0.2", symbolMCIPAddrStr, symbolMCPort )
   while True:
            print 'Spinning'
            try:
                    b = MD()

                    data = receiver.read(1024)

接收器套接字将一直阻塞,直到数据传入,因此print 'Spinning'只打印一次,直到在套接字上接收到数据。当我询问操作系统此进程占用多少CPU时,即使它正在等待接收,它返回的结果是:

^{pr2}$

事实上,如果我运行这些进程中的几个,我的电脑有两个CPU和8个核心,所有的核心都会达到100%的使用率,计算机就会变得无法使用。在

我一定误解了python的“阻塞”概念,因为即使是基本上应该处于休眠状态的“不做任何事情”进程也会占用大量CPU。在

有没有一种更正确的方法来编写它,以便基本上等待i/o[中断驱动]的程序放弃CPU?在


Tags: 数据程序核心进程librarycpu事情print
1条回答
网友
1楼 · 发布于 2024-05-19 01:46:47

您还没有发布完整的示例,因此很难确定发生了什么。在

但是,我看到在循环中有一个try块,网络代码在try块中。我不知道你的异常处理是怎么做的。然而,我猜它会像无意中吞下一个重要的错误。然后循环再次运行,可能会生成相同的错误。这样,程序实际上正忙着循环,即使您认为它处于休眠状态,阻塞了I/O

相关问题 更多 >

    热门问题