たとえば、キューイングシステムから毎秒約500行(これをさらに並列化して約50 psに減らすことができます)でリアルタイムにデータを収集し、それを DataFrame
。
rq = MyRedisQueue(..)
df = pd.DataFrame()
while 1:
recv = rq.get(block=True)
# some converting
df.append(recv, ignore_index = True)
ここで問題は、このデータに基づいてCPUをどのように利用するかです。したがって、私はGILの制限を完全に認識しており、ここでもマルチプロセッシングマネージャーの 名前空間を調べましたが、中央に保持されるデータフレームのレイテンシに関していくつかの欠点があるようです。それを掘り下げる前に、プロセス間に適用するために私が認識したものを試してみましたが、これは遅くなり、オーバーヘッドが多すぎます。pool.map
pickle
したがって、これが最後に疑問に思いました。1秒あたり500行(または1秒あたり50行)の挿入を別のプロセスに転送して、子のデータに統計とヒューリスティックを適用するためのCPU時間を残すにはどうすればよいでしょうか。プロセス?
多分それは2つのプロセスの間にカスタムTCPソケットまたはキューシステムを実装する方が良いでしょうか?または、親プロセス内の1つの大きなデータフレームへの高速アクセスを実際に許可するための実装pandas
または他のライブラリーはありますか?パンダ大好き!