def num(): for i in range(1,4): print(i,"发送出去") a = yield i print(a,"接受外部参数") i = num() nu = i.__next__() print(nu,"接收迭代参数") while True: try: print(nu ...
分类:
编程语言 时间:
2020-09-18 00:53:08
阅读次数:
38
并行和并发的区别 并发:指系统有处理多个问题的能力,不一定要同时 并行:指系统有同时处理过个任务的能力(多个线程是并行的) 线程和进程 进程:一个程序的启动就代表系统为该程序开辟了一个独立的空间为程序的运行做准备,即一个进程的发生 线程:一个进程执行中,可以有一个或多个线程同时运行,这使得进程可以同 ...
分类:
编程语言 时间:
2020-09-17 18:31:41
阅读次数:
92
某个方法通过一定的算法会产生一组序列,且每次返回一个值的方式叫做生成器。 一,实现机制: 方法(函数)在每次运算时,遇到yield后,返回当前的值,并记录当前运行的状态,再下次进入时,从记录的状态开始再次进入计算。 二,特性: (1)以yield关键字定义一个生成器函数。 (2)生成器函数返回的是一 ...
分类:
编程语言 时间:
2020-09-10 23:19:30
阅读次数:
59
如果大家读过dapper源码,你会发现这内部有很多方法都用到了yield关键词,那yield到底是用来干嘛的,能不能拿掉,拿掉与不拿掉有多大的差别,首先上一段dapper中精简后的Query方法,先让大家眼见为实。privatestaticIEnumerable<T>QueryImpl<T>(thisIDbConnectioncnn,CommandDefinitioncom
yield是python的一个关键字,本质上是一个生成器generator。
分类:
编程语言 时间:
2020-09-07 18:46:12
阅读次数:
44
##switch表达式(预览) 在JDK 12中引入了Switch表达式作为预览特性。JDK 13提出了第二个switch表达式预览。JEP 354修改了这个特性, 它引入了yield语句,用于返回值。这意味着,switch表达式(返回值)应该使yield, switch语句(不返回值)应该使用 b ...
分类:
编程语言 时间:
2020-09-04 17:43:46
阅读次数:
65
在4.4之前的版本中,Swoole一直不支持CURL协程化,在代码中无法使用curl。由于curl使用了libcurl库实现,无法直接hook它的socket,4.4版本使用Swoole\Coroutine\Http\Client模拟实现了curl的API,并在底层替换了curl_init等函数的C ...
分类:
Web程序 时间:
2020-08-29 15:24:31
阅读次数:
60
一、概念 #只要函数内部包含有yield关键字,那么函数名()的到的结果就是生成器,并且不会执行函数内部代码 def func(): print(' >first') yield 1 print(' >second') yield 2 print(' >third') yield 3 print(' ...
分类:
其他好文 时间:
2020-08-17 17:48:59
阅读次数:
88
SonarQube简介 SonarQube是一个代码质量管理开放平台,它集成了数千种自动的静态代码分析规则, 以python为例,典型的静态代码分析规则: l "break" and "continue" should not be used outside a loop l "yield" and ...
分类:
其他好文 时间:
2020-08-10 16:13:18
阅读次数:
65
一、greenlet模块 如果我们在单个线程内有20个任务,要想实现在多个任务之间切换,使用yield生成器的方式过于麻烦(需要先得到初始化一次的生成器,然后再调用send。。。非常麻烦),而使用greenlet模块可以非常简单地实现这20个任务直接的切换。 from greenlet import ...
分类:
其他好文 时间:
2020-07-30 14:50:03
阅读次数:
64