多种用途

lets的Python项目详细描述


gevent的实用程序。

有几个gevent.Greenlet子类:

  • ^ TT2}$——最大化GeEnter环境中的多核使用。
  • Transparentlet–保留exc_信息,而不是打印异常

等等:

  • ObjectPool–池对象。(例如连接池)

请参阅下一个示例

示例

bcrypt

的processlet

bcrypt是一个用于散列密码的库散列非常重 CPU绑定任务你不能保证只与gevent并发。使用 Processlet取而代之:

importbcryptimportgeventfromletsimportProcesslet# bcrypt.hashpw is very heavy cpu-bound task.  it can spend a few seconds.defhash_password(password,salt=bcrypt.gensalt()):returnbcrypt.hashpw(str(password),salt)deftictoc(delay=0.1):whileTrue:print'.'gevent.sleep(delay)passwords=['alfa','bravo','charlie','delta','echo','foxtrot','golf','hotel','india','juliett','kilo','lima','mike','november','oscar','papa','quebec','romeo','sierra','tango','uniform','victor','whiskey','xray','yankee','zulu']# start tictocgevent.spawn(tictoc)# Greenlet, tictoc pauses for a few secondsgreenlet=gevent.spawn(hash_password,passwords[0])password_hash_0=greenlet.get()# Processlet, tictoc never pausesprocesslet_1=Processlet.spawn(hash_password,passwords[1])processlet_2=Processlet.spawn(hash_password,passwords[2])password_hash_1=processlet_1.get()password_hash_2=processlet_2.get()

您还可以使用ProcessPool限制子进程的数量:

importmultiprocessingfromletsimportProcessPoolpool_size=max(multiprocessing.cpu_count()-1,1)pool=ProcessPool(pool_size)password_hashes=pool.map(hash_password,passwords)

Memcached连接池

Greenlet安全连接池可以通过ObjectPool轻松实现:

importmemcachefromletsimportObjectPoolmc_pool=ObjectPool(10,memcache.Client,[('localhost',11211)])defsave(key,val):withmc_pool.reserve()asmc:mc.set(key,val)forx,password_hashinenumerate(password_hashes):gevent.spawn(save,'password_hashes[%d]'%x,password_hash)gevent.wait()

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
多线程Java可运行接口解决方案   java指向这些方法的uri是什么样子的   java处理:一个对象忽略if语句   在DispatcherServlet中找不到URI为[***]的HTTP请求的java映射   java Weka未启动。只有黑屏消失了   java如何根据对象的一个属性对对象数组进行排序?   eclipse在Kotlin注释参数中使用java常量   用于截锥剔除的java截锥未正确创建   java如何让多个活动使用相同的跟踪活动?   通过安卓的woocommerce api中的java错误Url   来自另一个文件的JSTL中每个循环的java   java使用安卓应用程序中的数据库保存gps位置   Java中比较linkedHashMap值和字符串的类型转换   在java中,有没有一种方法可以从一开始就使用Kafka流(而不是通过KafkaConsumer)读取消息?   使用jmonkeyengine在安卓上运行basicgame的java疑难解答   java中的millis字符串格式   Java泛型、反射API和JDBC:无法映射Java。朗和爪哇。sql。类型的时间戳   java在DynamoDB中以历元格式自动填充时间