调度程序发送到睡眠的长时间运行的CPU密集型python脚本

调度程序发送到睡眠的长时间运行的CPU密集型python脚本,python,ubuntu,sysadmin,nice,Python,Ubuntu,Sysadmin,Nice,我已经编写了一个非常CPU密集的数据挖掘脚本。它已经运行了几天了,但是现在(由于发送到控制台的跟踪消息),我可以看到它没有工作(实际上,在过去10个小时左右都没有工作) 当我运行top时,我注意到进程要么处于睡眠状态,要么处于不可接受的睡眠状态。这浪费了很多时间 我使用了sudorenice-10pid来更改进程的nice值,运行了一段时间后,我注意到进程再次进入睡眠状态 我的问题: 我能做些什么来强制脚本运行直到它完成(即使这意味着机器在脚本结束之前不可用) 在Python中是否有一个yiel

我已经编写了一个非常CPU密集的数据挖掘脚本。它已经运行了几天了,但是现在(由于发送到控制台的跟踪消息),我可以看到它没有工作(实际上,在过去10个小时左右都没有工作)

当我运行
top
时,我注意到进程要么处于睡眠状态,要么处于不可接受的睡眠状态。这浪费了很多时间

我使用了
sudorenice-10pid
来更改进程的nice值,运行了一段时间后,我注意到进程再次进入睡眠状态

我的问题:

  • 我能做些什么来强制脚本运行直到它完成(即使这意味着机器在脚本结束之前不可用)

  • 在Python中是否有一个
    yield
    命令可以使用,它允许我定期将控制权传递给其他进程/线程,以阻止调度程序尝试将脚本置于睡眠状态


  • 我在Ubuntu10.0.4上使用python 2.7.x,只有当有另一个进程准备运行时,调度程序才会将您的进程挂起。如果您没有占用CPU的其他进程,您的进程大部分时间都会运行。调度程序不会因为您的进程感觉像是睡眠,就将其置于睡眠状态

    我的猜测是,您的进程无法运行是有原因的,例如,它正在阻塞并等待I/O或数据