[英]How to make a library asynchronous in python
在我的工作中,他们“利用”龙卷风,但没有异步库。 是什么使图书馆成为异步的,从而使其更适合龙卷风之类的东西? 有没有很好的例子,或者我猜您在__enter__
或__exit__
事情可以表明您没有阻止?
我发现很难刮擦一些材料。
如果您的库不是异步的,并且不支持在龙卷风ioloop中运行,那么您唯一可以做的就是在其他线程中运行这些任务。
本质上,有两种选择,具体取决于您是否要接收返回值:
如果your_task_func
是同步任务,则您希望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)))
关于这个的更多细节可以在这篇不错的文章中找到。
问候马库斯
异步---您的意思是线程化吗? 如果要同时运行一些代码,可以使用标准库中已内置的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
关键字。
另请参见第三方线程库 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.