c++ - 如何在python的阻塞的函數中獲取變量值
問題描述
目前是使用C++嵌入式的python函數python函數是阻塞式的接收服務器消息直到退出監聽才會有返回值監聽中收到消息會調用python的一個回調函數,可以獲取到收到的消息所以要怎么樣來返回消息給C++
EDIT:代碼如下callback打印可以打印正確數據,問題是這里用pika庫寫的rabbitMQ 的client就是為了不用rabbitMQ的C庫現在有一種考慮就是再用C寫一個python可以調的module然后在回調函數里面調,就是感覺有點丑陋。
#!/usr/bin/env pythonimport pikaimport sysmessage = ''def callback(ch, method, properties, body): message = body print(method.routing_key) return message def consume(): connection = pika.BlockingConnection(pika.ConnectionParameters(host=’localhost’)) channel = connection.channel() result = channel.queue_declare(exclusive=True) queue_name = result.method.queue channel.queue_bind(exchange=’normalEx’, routing_key=’remote’, queue=queue_name) print(’ [*] Waiting for logs. To exit press CTRL+C’) channel.basic_consume(callback, queue=queue_name, no_ack=True) channel.start_consuming()
問題解答
回答1:處于堵塞的函數, 都需要等到收到數據或者等待超時才能返回的, 如果你想要快點返回, 就采用不堵塞的方式咯,只不過這樣會比較蛋疼
相關文章:
1. android - 安卓做前端,PHP做后臺服務器 有什么需要注意的?2. mysql - ubuntu開啟3306端口失敗,有什么辦法可以解決?3. javascript - 從mysql獲取json數據,前端怎么處理轉換解析json類型4. mysql - C#連接數據庫時一直這一句出問題int i = cmd.ExecuteNonQuery();5. mysql replace 死鎖6. extra沒有加載出來7. 求救一下,用新版的phpstudy,數據庫過段時間會消失是什么情況?8. thinkPHP5中獲取數據庫數據后默認選中下拉框的值,傳遞到后臺消失不見。有圖有代碼,希望有人幫忙9. javascript - 微信網頁開發從菜單進入頁面后,按返回鍵沒有關閉瀏覽器而是刷新當前頁面,求解決?10. django - Python error: [Errno 99] Cannot assign requested address
