我试图找到一种方法来启动一个新进程,并在不到X秒的时间内得到它的输出。如果这个过程需要更多的时间,我想忽略这个过程的结果,杀死这个过程并继续。在
我基本上需要在下面的代码中添加计时器。现在确定如果有更好的方法来做,我愿意接受另一个更好的解决方案。在
from multiprocessing import Process, Queue
def f(q):
# Ugly work
q.put(['hello', 'world'])
if __name__ == '__main__':
q = Queue()
p = Process(target=f, args=(q,))
p.start()
print q.get()
p.join()
谢谢!在
您可能会发现以下模块在您的案例中很有用:
模块
要使用,请参阅下面演示其用法的示例:
示例
^{pr2}$要使the queue example from the docs适应您的情况,只需将超时传递给
q.get()
调用,并在超时时终止进程:使用
Pipe
可能更轻量级,否则代码是相同的(您可以使用.poll(timeout)
来确定是否有要接收的数据)。在您正在运行的流程是否涉及循环? 如果是这样,您可以在开始循环之前获取时间戳,并在循环中包含一个If语句,并使用系统出口();如果当前时间戳与记录的开始时间戳相差超过x秒,则命令终止脚本。在
相关问题 更多 >
编程相关推荐