协程

1. 执行效率极高。因为子程序切换不是线程切换,而是由程序自身控制,因此没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显。

2. 不需要多线程的锁机制, 因为只有一个线程,不存在写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了。

协程始终只是一个线程执行,那如何得用多核CPU呢? 最简单的办法就是多进程+协程, 可获得极高的性能、python对协程的支持是通过generator实现的。

在生成器generator中, 可以通过for来迭代,也可以通过next()获取由yield语句返回的下一个值。

在python中yield不但可以返回一个值,它还可以接收调用者发出的参数。

yield实现肥波纳妾:

def fb():
    a, b = 0, 1
    c = 0
    while True:
        yield c
        c = a + b
        a, b = b, c

if __name__ == "__main__":
    tmp = fb()
    for i in range(0, 10):
        result = tmp.__next__()
        priint(result)

生产者消费者模型:

def consumer():
    r = ''
    while True:
        n = yield r
        if not n:
            return
        print('[CONSUMER] Consuming %s...' % n)
        r = '200 OK'

def produce(c):
    c.send(None)
    n = 0
    while n < 5:
        n = n + 1
        print('[PRODUCER] Producing %s...' % n)
        r = c.send(n)
        print('[PRODUCER] Consumer return: %s' % r)
    c.close()

c = consumer()
produce(c)

转载于:https://www.cnblogs.com/huangxm/p/5716831.html

delphiASIO_mmzmagic本库是Boost ASIO for delphi的高效率稳定封装 做了8年多的DELPHI开发,还仍然在用D7,后续的DELPHI版本比如d2007,d2010还是非常很优秀的,有许多方便的功能和语法效率的改进。为啥不更换到新版本呢? 对于我来说究其原因还是因为通讯程序无法简单的做修改就移植到新版本上。 另外一个方面也是DELPHI本身没有较好的通讯库,INDY不稳定也不完善,不同版本也有些区别。开发起来四处抛异常的方式也让人很不爽。 研究了一些第三方通讯库,如ics系列dxsock系列,最后选择了dxsock,这样轻量级的库从稳定性还是易用性来说都比其它的要好用些。 不过这些库由于底层实现的方式都不能很好的支持大规模应用,由于后续支持的问题也不能支持DELPHI的新unicode版本。 C++由于有类似ACE、ASIO等等工业级的高性能稳定牛库的支持,c++的使用者们可以轻轻松松搞定很多难题而不用为并发连接数发愁。 为此经我研究决定封装底层基于IOCP(完成端口)实现的Boost::ASIO为DELPHI的底层通讯库,并且已经实现,delphi fans们大家有福啦 哈哈! 主要有以下几点好处: 1、支持大量并发( xp系统上测试可以支持到15000+的并发连接,付测试程序) 2、支持delphi的所有版本(d5以及以上版本都可以支持) 3、支持tcp服务端和客户端、异步通讯机制 4、在封装中自动高效处理粘包、异步通讯内存管理等较烦人的问题,也是容易导致不稳定的因素,提供外部使用的简明接口 5、最重要的是使用和开发都十分简单 :) FAQ: 我能用它做什么? 答:所有用到tcp通讯的地方你都可以用它。 用它封装的服务端或者客户端可以与其它控件或者是其它程序进行通讯吗? 答:可以,底层是标准tcp协议,不会有任何问题。 它有什么示例程序吗? 答:有专门的性能测试程序,也有远程数据库对象ADO版本以及UNIDAC版本的实际封装。 使用它是否需要支付费用?能否提供源代码? 答:完全免费使用,并且提供所有源码,我会做好后续更新为delphi的发展做点力所能及的贡献。 如果我对它进行了改进怎么联系作者? 答:QQ 22900104,马敏钊,邮箱 22900104@qq.com,QQ讨论群 15637473 欢迎加入讨论。 发布时客户端需要附带什么吗? 答:需要附带一个动态库“Svr_intf.dll”100k大小,由于是使用vs2005编译的boost库所以运行时机器上需要安装有微软的c++ vs2005运行库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值