博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
再读《Parallel Programming with Python》并作笔记
阅读量:6752 次
发布时间:2019-06-25

本文共 1696 字,大约阅读时间需要 5 分钟。

并发编程,在哪个语言里都属于高端应用,一定得会了才好意思说懂了这门语言。

在工作中用得并不是很多,忘了一些内容,就慢慢看,慢慢补上。

今天一天看了近三分之一(我看外文越来越快了??:)),

实践一下多线程的threading模块。

#coding: utf-8import logging, threadingfrom Queue import Queuelogger = logging.getLogger()logger.setLevel(logging.DEBUG)formatter = logging.Formatter('%(asctime)s - %(message)s')ch = logging.StreamHandler()ch.setLevel(logging.DEBUG)ch.setFormatter(formatter)logger.addHandler(ch)fibo_dict = {}shared_queue = Queue()input_list = [30, 10, 55, 71]queue_condition = threading.Condition()def fibonacci_task(condition):    with condition:        while shared_queue.empty():            logger.info("[%s] - waiting for elements in queue..."                        % threading.current_thread().name)            condition.wait()        else:            value = shared_queue.get()            a, b = 0, 1            for item in range(value):                a, b = b, a + b                fibo_dict[value] = a        shared_queue.task_done()        logger.debug("[%s] fibonacci of key [%d] with result [%d]" %                     (threading.current_thread().name, value, fibo_dict[value]))def queue_task(condition):    logging.debug('Starting queue_task...')    with condition:        for item in input_list:            shared_queue.put(item)        logging.debug("Notifying fibonacci_task threads that the queue is ready to consume...")        condition.notifyAll()threads = [threading.Thread(target=fibonacci_task,                            args=(queue_condition,)) for i in range(4)][thread.start() for thread in threads]prod = threading.Thread(name="queue_task_thread", target=queue_task,                        args=(queue_condition,))prod.start()[thread.join() for thread in threads]

  

转载地址:http://pkxho.baihongyu.com/

你可能感兴趣的文章
Linux SVN搭建模式
查看>>
C#基础复习--第一部
查看>>
[Android问答] ListView如何加载远程图片?(附代码)
查看>>
android 调试源码
查看>>
构造函数链
查看>>
k-means clustering - Wikipedia, the free encyclopedia
查看>>
三星S6D1121主控彩屏(240*320*18bit,262K)图形设备接口(GDI)实现
查看>>
ACL技术原理浅析及实例
查看>>
Winform开发框架之通用人员信息管理
查看>>
无序整数数组中找第k大的数
查看>>
柯乐义图片压缩类
查看>>
head first java 01 ( 1 ~ 3 章 )
查看>>
Superhero.js – 构建大型 JavaScript 应用程序的最佳资源
查看>>
什么是UAT测试?
查看>>
javascript中通过className灵活查找元素 例如我们要把根据class来进行修改样式
查看>>
Installing — pylibmc 1.2.3 documentation
查看>>
FireDAC 下的 Sqlite [8] - 自定义函数
查看>>
Android 驱动测试程序H-M-S <2>
查看>>
Swift语言指南(七)--语言基础之布尔值和类型别名
查看>>
Hadoop 安装记录
查看>>