在我的工作中,他們「利用」龍捲風,但他們沒有異步庫。什麼使庫異步,以便它可以更好地適合龍捲風這樣的東西?有沒有什麼好的例子,或者我想你在__enter__
或__exit__
中做了什麼,可以表明你沒有阻塞?如何在Python中使庫異步
我發現很難一起劃傷一些材料。
在我的工作中,他們「利用」龍捲風,但他們沒有異步庫。什麼使庫異步,以便它可以更好地適合龍捲風這樣的東西?有沒有什麼好的例子,或者我想你在__enter__
或__exit__
中做了什麼,可以表明你沒有阻塞?如何在Python中使庫異步
我發現很難一起劃傷一些材料。
如果你的庫不是異步的並且不支持在龍捲風ioloop中運行,那麼你唯一能做的就是在其他線程中運行這些任務。
本質上講,有兩種選擇,這取決於你是否要接收的返回值的:
如果your_task_func
是你想要卸載到另一個線程同步任務基本上做到以下幾點:
def callback(future):
# here you want to do some stuff with the value future.result()
EXECUTOR.submit(
your_task_func
).add_done_callback(
lambda future: tornado.ioloop.IOLoop.instance().add_callback(
partial(callback, future)))
更多關於這個細節可以在this nice write-up被發現。
問候 馬庫斯
異步---你的意思是線程?如果您想同時運行一些代碼,則可以使用中已內置的threading
模塊(或更低級別的thread
模塊)。例如:
import threading
import time
def counter():
c = 0
while True:
print c
time.sleep(1)
c += 1
counterThread = threading.Thread(target=counter, name="counter")
counterThread.daemon = True # if False (default), Python interpreter won't quit until the thread ends
counterThread.start()
鎖定對象與__enter__
和__exit__
實現,這樣就可以使用with
關鍵字,按你的問題。請參閱third-party threading libraries。
在這種情況下,它是不是我所期待的。但這是一個同樣好的例子,我可以再次使用。感謝您花時間回答 – nialloc
很好的答案和良好的支持鏈接。謝謝你 – nialloc