0

我需要不断加载一些数据馈送。加载数据馈送可能需要 20-30 秒。通过每小时检查一次 MySQL 数据库,我知道要加载哪些提要。

我最多可以同时加载 20 个提要。重要的是,没有一个提要相互阻塞,因为我需要不断刷新它们。

当我不再需要加载提要时,我正在阅读的数据库会更新,因此我需要停止加载我想从我的主程序执行的提要,这样我就不需要到数据库的多个连接。

我知道我可以使用线程、子进程或 gevents 来做到这一点。我想问这些是否是最好的。

谢谢

4

1 回答 1

1

这取决于您的应用程序逻辑。如果您只是将数据输入数据库而没有任何 CPU 密集型任务,那么您的大部分应用程序时间将花在 IO 上,线程就足够了。如果你正在做一些 CPU 密集型的工作,那么你应该使用多处理模块,这样你就可以使用你所有的 CPU 内核,因为 GIL,哪些线程不允许你使用。

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

于 2013-08-17T21:47:15.840 回答