2013-08-17 53 views
0

我需要不斷加載一些數據提要。數據饋送可能需要20-30秒才能加載。我知道每小時檢查一次MySQL數據庫的負載情況。Python:在後臺運行進程並具有殺死它們的能力

我最多可以同時加載20個Feed。由於我需要不斷刷新它們,因此非Feed的相互阻擋非常重要。

當我不再需要加載飼料我正在閱讀的數據庫得到更新,因此我需要停止加載飼料,我想從我的主程序做,所以我不需要多個連接到分貝。

我知道我可以使用線程,子進程或gevents來做到這一點。我想問問這些是否是最好的。

謝謝

回答

1

這取決於您的應用程序邏輯。如果只是將數據提供給數據庫而沒有任何CPU密集型任務,那麼大部分應用程序時間將用於IO,線程就足夠了。如果您正在執行一些CPU密集型宿主,那麼您應該使用多處理模塊,以便可以使用您的所有CPU內核,由於GIL,哪些線程不會允許您。

使用子進程只會添加一個額外的任務來實現已經在多處理模塊中實現的相同的東西,所以我會跳過這個(爲什麼重新發明輪子)。而gevents只是一個事件循環,我不明白這比使用線程更好。但如果我錯了,請糾正我,我從來沒有使用過gevent。

相關問題