cuốn sách gpt4 ai đã làm

ZeroMQ đa lõi?

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 15:08:02 27 4
mua khóa gpt4 Nike

ZeroMQ được sử dụng để nhận các tham số đầu vào..

máy chủ chắc chắn():
đại diện = bối cảnh.socket(zmq.REP)
Rep.bind('tcp://*:{}'.format(PORT))

while True:
dữ liệu = Rep.recv_json()
kết quả = tính toán (dữ liệu)
Rep.send_json(kết quả)

Phương pháp tính toán được gọi làtính toán, sau khi hoàn thành,kết quảSẽ được gửi đến khách hàng thông qua ZMQ.

Theo thử nghiệm của mình thì hiện tại nó chỉ dùng được 1 lõi của máy, giờ mình muốn dùng các lõi còn lại. Tôi đã đọc một số về đa xử lýđa luồng Tài liệu này, nhưng chúng tập trung chủ yếu vào đầu vào cố định, đây không phải là trường hợp của tôi.

Vì vậy, tôi cần một số sự giúp đỡ ngay bây giờ ..

câu trả lời hay nhất

Đây là cách sử dụng đa xử lý để có nhiều quy trình công nhân có thể xử lý các kết nối máy khách đồng thời:

nhập zmq
từ quá trình nhập đa xử lý

tính toán def (dữ liệu):
trả về {"đầu ra": dữ liệu ['ok']}

def xử lý_request(url):
bối cảnh = zmq.Context()
socket = context.socket(zmq.REP)
socket.connect(url)
while True:
dữ liệu = socket.recv_json()
print("đã nhận được {}".format(data))
out = tính toán(dữ liệu)
socket.send_json(ra)

máy chủ chắc chắn():
bối cảnh = zmq.Context()
# Thiết lập socket để client kết nối.
client = context.socket(zmq.ROUTER)
client.bind('tcp://*:{}'.format(5556))

# Thiết lập ổ cắm ipc để công nhân kết nối
url_worker = 'ipc:///tmp/workers'
công nhân = context.socket(zmq.DEALER)
công nhân.bind(url_worker)

# Bắt đầu 4 quy trình công nhân
cho _ trong phạm vi (4):
p = Quá trình(target=handle_request, args=(url_worker,))
p.start()

# Chuyển tiếp yêu cầu từ khách hàng đến công nhân thông qua Hàng đợi
zmq.device(zmq.QUEUE, khách hàng, công nhân)


if __name__ == "__main__":
máy chủ()

Bây giờ nếu bạn trỏ ứng dụng khách mẫu tới nó:

nhập zmq
từ nhập luồng Chủ đề

chắc chắn send_req(yêu cầu):
bối cảnh = zmq.Context()

print("Đang kết nối với máy chủ hello world...")
socket = context.socket(zmq.REQ)
socket.connect("tcp://localhost:5556")
print("Đang gửi yêu cầu %s..." % yêu cầu)

socket.send_json({"ok" : "Xin chào"})

tin nhắn = socket.recv()
print("Đã nhận được phản hồi %s [ %s ]" % (yêu cầu, tin nhắn))

# Thực hiện song song 10 request
cho yêu cầu trong phạm vi (10):
Thread(target=send_req, args=(request,)).start()

Bạn nhận được kết quả đầu ra sau:

Đang kết nối với máy chủ hello world...
Sending request 0 ...
Đang kết nối với máy chủ hello world...
Sending request 1 ...
Đang kết nối với máy chủ hello world...
Sending request 2 ...
Đang kết nối với máy chủ hello world...
Sending request 3 ...
Đang kết nối với máy chủ hello world...
Sending request 4 ...
Đang kết nối với máy chủ hello world...
Sending request 5 ...
Đang kết nối với máy chủ hello world...
Sending request 6 ...
Đang kết nối với máy chủ hello world...
Sending request 7 ...
Đang kết nối với máy chủ hello world...
Sending request 8 ...
Đang kết nối với máy chủ hello world...
Sending request 9 ...
<5 second delay>
Received reply 0 [ {"output":"Hello"} ]
Received reply 1 [ {"output":"Hello"} ]
Received reply 3 [ {"output":"Hello"} ]
Received reply 2 [ {"output":"Hello"} ]
<5 second delay>
Received reply 4 [ {"output":"Hello"} ]
Received reply 5 [ {"output":"Hello"} ]
Received reply 6 [ {"output":"Hello"} ]
Received reply 7 [ {"output":"Hello"} ]
< 5 second delay>
Received reply 8 [ {"output":"Hello"} ]
Received reply 9 [ {"output":"Hello"} ]

关于python - 多核 ZeroMQ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30455461/

27 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress