美文网首页
DECO——被修饰的并发

DECO——被修饰的并发

作者: roger_lyb | 来源:发表于2016-05-27 01:02 被阅读0次

使用DECO就像在Python编程中查找或者创建两个函数一样简便。第一个函数是我们想要并行运行的函数,该函数使用@concurrent修饰。第二个函数调用使用@concurrent修饰的函数,并且使用@synchronized修饰自己。修饰第二个函数是可选的,但是却提供了非常酷的益处。让我们看个例子:

@concurrent # We add this for the concurrent function

def process_lat_lon(lat, lon, data):

    #Does some work which takes a while

    return result

@synchronized # And we add this for the function which calls the concurrent function

def process_data_set(data):

    results = defaultdict(dict)

    for lat in range(...):

        for lon in range(...):

            results[lat][lon] = process_lat_lon(lat, lon, data)

    return results

这就是要做的事情,我们只需要改动两行代码就能使程序并行化。此刻,程序将充分利用所在机器上所有CPU核,这使得程序飞速运行。

局限

@concurrent修饰器仅仅是加速运行时间多于约1ms的那些函数

如果函数运行时间少于1ms,你的代码反而会运行的更慢

@synchronized修饰器仅仅能在“简单”函数上起作用,确信你的函数满足下面的标准:

仅是调用或者赋值@concurrent函数的结果到索引的对象,就像下面的形式:

concurrent(...)

result[key] = concurrent(…)

不要间接的读取被@concurrent函数调用而赋值的对象

相关文章

  • DECO——被修饰的并发

    使用DECO就像在Python编程中查找或者创建两个函数一样简便。第一个函数是我们想要并行运行的函数,该函数使用@...

  • volatitle关键字

    1、volatitle是java的一种轻量级的并发机制2、被volatitle修饰的关键字也存在并发问题3、一般的...

  • 分布式系统一致性问题解决实战

    一、背景及问题描述 业务背景: 商户提交表单数据至旺铺(deco项目,以下皆称为deco),deco需要接入poi...

  • 线程安全的Map

    Hashtable的方法都是synchrnized修饰的线程安全 ConcurrentHashMap并发容器,JD...

  • final与finalize与finally与return

    final 修饰变量:只能被赋值一次修饰方法:不能被重写修饰类:不能被继承。(被final修饰的类中的成员变量、方...

  • 2020-01-07final

    final-----把握最终的的含义 1.修饰类,被修饰的类不可被继承2.修饰方法,被修饰的方法不能被重写3.修饰...

  • final finally finalize

    final可以修饰变量,方法,类。修饰变量,变量的值不能被修改;修饰方法,方法不能被重写;修饰类,类不能被继承。 ...

  • Final、static、super、this

    final不能被修改 修饰变量:为常量 修饰方法:不能被重载 修饰类:不能被继承 修饰对象:不能重新new 对象。...

  • JavaSE基础知识学习-----Final关键字

    Final关键字 final:最终的,可以用来修饰类,修饰属性,修饰方法,修饰参数,被final修饰的表示不可以被...

  • Java关键字之final

    final关键字可以用来修饰类、变量、方法。 被修饰的类不能被继承。 被修饰的变量一旦赋值,则不能修改。 被修饰的...

网友评论

      本文标题:DECO——被修饰的并发

      本文链接:https://www.haomeiwen.com/subject/upixdttx.html