草庐IT

coroutines

全部标签

asynchronous - Kotlin协程中的launch/join和async/await有什么区别

在kotlinx.coroutines库中,您可以使用launch(使用join)或async启动新的协程>(使用await)。它们之间有什么区别? 最佳答案 launch用于触发并忘记协程。这就像开始一个新线程。如果launch中的代码以异常终止,那么它会被视为线程中的uncaught异常——通常在后端JVM应用程序中打印到stderr并导致Android应用程序崩溃。join用于等待启动的协程完成,并且不会传播其异常。然而,一个崩溃的child协程也会取消它的父协程,并产生相应的异常。async用于启动一个计算某些结果的协程。结

asynchronous - Kotlin协程中的launch/join和async/await有什么区别

在kotlinx.coroutines库中,您可以使用launch(使用join)或async启动新的协程>(使用await)。它们之间有什么区别? 最佳答案 launch用于触发并忘记协程。这就像开始一个新线程。如果launch中的代码以异常终止,那么它会被视为线程中的uncaught异常——通常在后端JVM应用程序中打印到stderr并导致Android应用程序崩溃。join用于等待启动的协程完成,并且不会传播其异常。然而,一个崩溃的child协程也会取消它的父协程,并产生相应的异常。async用于启动一个计算某些结果的协程。结

python - 异步操作应该用@asyncio.coroutine 装饰什么?

我想异步运行我的代码。我应该用@asyncio.coroutine装饰什么?我应该用yieldfrom调用什么来进行异步操作?就我而言,我有一些没有装饰器的示例代码。(简单的聊天机器人看起来像IRC)importasyncioclassChatBot:def__init__(self,loop):conn=asyncio.open_connection(HOST,PORT,loop=loop)self.reader,self.writer=yieldfromconndefsend(self,msg):self.writer.write(msg)defread(self):msg=yie

python 键入模块在 python 3.5 中缺少 Coroutine 类

我正在尝试编写使用Coroutine类的代码,如typingdocumentation中所述.看起来它在python3.5中可用,但是当我输入导入时它抛出一个ImportError:In[1]:fromtypingimportCoroutineImportError:cannotimportname'Coroutine'然后,我尝试在Python3.6中运行代码并且运行良好。此类在python3.5中不可用吗?如果不是,为什么它会出现在文档中(尤其是python3.5)?我尝试用python3.5.2运行它。 最佳答案 typing

Android Kotlin之Coroutine(协程)详解

协程是一种并发设计模式,您可以在Android平台上使用它来简化异步执行的代码。在Android上,协程有助于管理长时间运行的任务,如果管理不当,这些任务可能会阻塞主线程并导致应用无响应。协程的优点:轻量您可以在单个线程上运行多个协程,因为协程支持挂起,不会使正在运行协程的线程阻塞。挂起比阻塞节省内存,且支持多个并行操作。内存泄漏更少使用结构化并发机制在一个作用域内执行多项操作内置取消支持取消操作会自动在运行中的整个协程层次结构内传播。Jetpack集成许多Jetpack库都包含提供全面协程支持的扩展。ViewModel等还提供了协程作用域(比如,viewModelScope),用于结构化并发

python - 遍历 asyncio.coroutine

我最近一直在研究asyncio,虽然我开始对它的工作原理有了直觉,但有些事情我还做不到。我不确定这是因为我的构造有误,还是我尝试做的事情没有意义。简而言之,我希望能够迭代生成的asyncio.coroutine。例如,我希望能够执行以下操作:@asyncio.coroutinedefcountdown(n):whilen>0:yieldfromasyncio.sleep(1)n=n-1yieldn@asyncio.coroutinedefdo_work():fornincountdown(5):print(n)loop.run_until_complete(do_work())但是,这

python - asyncio 的 call_later raises 'generator' object is not callable with coroutine object

我有一些使用call_later使用Python3.4的asyncio制作的简单代码。代码应该打印,等待10秒,然后再次打印(但是在应该执行end()时引发TypeError,见下文):importasyncio@asyncio.coroutinedefbegin():print("Startingtowait.")asyncio.get_event_loop().call_later(10,end())@asyncio.coroutinedefend():print("completed")if__name__=="__main__":try:loop=asyncio.get_eve

Python 异步 : reader callback and coroutine communication

我正在尝试实现一个将数据从标准输入传递到协程的简单想法:importasyncioimportsysevent=asyncio.Event()defhandle_stdin():data=sys.stdin.readline()event.data=data#NOTE:dataassignedtotheeventobjectevent.set()@asyncio.coroutinedeftick():while1:print('Tick')yieldfromasyncio.sleep(1)ifevent.is_set():data=event.data#NOTE:datareadfro

Python生成器, 'coroutine'中的非吞咽异常

我最近在Python生成器中发现了一些令人惊讶的行为:classYieldOne:def__iter__(self):try:yield1except:print'*ExceptedSuccessfully*'#raiseforiinYieldOne():raiseException('testexception')给出输出:*ExceptedSuccessfully*Traceback(mostrecentcalllast):File"",line2,inException:testexception*ExceptedSuccessfully*被打印出来让我(高兴地)感到惊讶,因为这

http - 净/http : concurrency and message passing between coroutines

我在RESTAPI服务器上工作,该服务器的功能之一是能够在创建新资源或修改现有资源时通过websocket通知任意数量的客户端。我有一个自定义操作路由器,用于将URL绑定(bind)到函数和gorillas的websocket库实现。对于IPC,我决定依赖channel,因为它似乎是协程之间通信的惯用方式。它的行为也像一个管道,这是我熟悉的概念。Create函数的原型(prototype)如下所示:funcCreate(reshttp.ResponseWriter,req*http.Request,userdatainterface{})(int,string,interface{})