Python:在后台运行进程并具有杀死它们的能力

时间:2013-08-17 21:05:01

标签: python subprocess gevent

我需要不断加载大量数据Feed。数据馈送可能需要20-30秒才能加载。我知道通过每小时检查一次MySQL数据库来加载什么。

我最多可以同时加载20个Feed。非常重要的是,因为我需要不断地刷新它们,所以它们互相阻塞。

当我不再需要加载Feed时,我正在阅读的数据库会更新,因此我需要停止加载我想从主程序中执行的Feed,因此我不需要多次连接到D b。

我知道我可以使用线程,子进程或gevents来实现这一点。我想问一下这些是否最好。

由于

1 个答案:

答案 0 :(得分:1)

这取决于您的应用程序逻辑。如果您只是将数据提供给数据库而没有任何CPU密集型任务,那么大部分应用程序时间将花费在IO上,并且线程就足够了。如果你正在做一些CPU密集型的后缀,那么你应该使用多处理模块,这样你就可以使用所有的CPU核心,由于GIL,这些线程不会允许你。

使用子进程只会添加一个额外的任务来实现已经在多处理模块中实现的相同的东西,所以我会跳过它(为什么重新发明轮子)。而gevents只是一个事件循环,我看不出它会比使用线程更好。但如果我错了请纠正我,我从未使用gevent。