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

本文共 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://ssoja.baihongyu.com/

你可能感兴趣的文章
30分钟让你学会 Spring事务管理属性
查看>>
java实现rabbitmq消息的发送接受
查看>>
contextlib
查看>>
android动画研究
查看>>
2016弱校联萌十一专场10.3 遗憾题合集
查看>>
结构体
查看>>
第一章 无人机移动测量综述
查看>>
驰骋工作流引擎设计系列11
查看>>
【转】Dubbo_与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
查看>>
采用camera拍照
查看>>
Avalon-MM Master Templates---READ 调试记录
查看>>
C语言写解一元二次方程程序心得
查看>>
java取小数点后两位
查看>>
[Poj1149]Pigs(最大流)
查看>>
Oracle登录操作系统验证和密码文件验证
查看>>
STM32 ~ UART 重映射
查看>>
day6 装饰器总结
查看>>
linux服务器CPU参数/proc/cpuinfo
查看>>
SqlDbHelper
查看>>
vi与vim
查看>>