Vì vậy, giả sử Bạn có một quy trình Python đang thu thập dữ liệu thời gian thực với khoảng 500 hàng mỗi giây (điều này có thể được song song hóa để giảm xuống khoảng 50 ps) từ một hệ thống xếp hàng và nối nó vào DataFrame
:
rq = MyRedisQueue(..)
df = pd.DataFrame()
while 1:
recv = rq.get(block=True)
# some converting
df.append(recv, ignore_index = True)
Bây giờ câu hỏi là: Làm thế nào để sử dụng CPU dựa trên dữ liệu này? Vì vậy, tôi hoàn toàn nhận thức được những hạn chế của GIL , và nhìn vào đa xử Giám đốc namespace , ở đây quá , nhưng có vẻ như có một số nhược điểm liên quan đến độ trễ trên dataframe centerally giữ với . Trước khi đào sâu vào nó, tôi cũng đã thử pool.map
cái mà tôi nhận ra để áp dụng pickle
giữa các quy trình, đó là cách làm chậm và có quá nhiều chi phí.
Vì vậy, sau tất cả những điều này cuối cùng tôi cũng tự hỏi, làm thế nào (nếu) một phần chèn 500 hàng mỗi giây (hoặc thậm chí 50 hàng mỗi giây) có thể được chuyển sang các quy trình khác nhau với thời gian CPU còn lại để áp dụng thống kê và chẩn đoán trên dữ liệu ở trẻ quy trình?
Có lẽ sẽ tốt hơn nếu thực hiện một ổ cắm tcp tùy chỉnh hoặc hệ thống xếp hàng giữa hai quy trình? Hoặc có một số triển khai trong pandas
hoặc các libaries khác để thực sự cho phép truy cập nhanh vào một khung dữ liệu lớn trong quy trình cha mẹ ? Tôi yêu gấu trúc!