Python核心编程 第18章 多线程
来源:互联网 发布:火锅英雄 知乎 编辑:程序博客网 时间:2024/06/01 08:48
1.对python虚拟机的访问由全局解释器锁来控制,正是这个锁能保证同一时刻只有一个线程在运行。
import threading loops = [4,2];def loop(nloop, nsec): print 'start loop', nloop, 'at:', ctime(); sleep(nsec); print 'loop', nloop, 'done at:', ctime();def main(): print 'starting at:', ctime(); threads = []; nloops = range(len(loops)); for i in nloops: t = threading.Thread(target=loop, args=(i, loops[i])); threads.append(t); for i in nloops: threads[i].start(); for i in nloops: threads[i].join(); #join() wait the thread over. print 'all NONE at:', ctime(); if __name__ == '__main__': main();
创建一个Thread的实例,传给它一个可调用的类对象。
loops = [4,2];class ThreadFunc(object): def __init__(self, func, args, name=''): self.name = name; self.func = func; self.args = args; def __call__(self): apply(self.func, self.args);def loop(nloop, nsec): print 'start loop', nloop, 'at:', ctime(); sleep(nsec); print 'loop', nloop, 'done at:', ctime();def main(): print 'starting at:', ctime(); threads = []; nloops = range(len(loops)); for i in nloops: t = threading.Thread(target=ThreadFunc(loop, (i, loops[i]), loop.__name__)); threads.append(t); for i in nloops: threads[i].start(); for i in nloops: threads[i].join(); #join() wait the thread over. print 'all NONE at:', ctime(); if __name__ == '__main__': main();
创建新线程的时候,Thread对象会调用ThreadFunc对象,这时会用到一个特殊函数__call__()。
从Thread派生出一个子类,创建一个这个子类的实例。
loops = (4,2);class MyThread(threading.Thread): def __init__(self, func, args, name=''): threading.Thread.__init__(self); self.name = name; self.func = func; self.args = args; def run(self): apply(self.func, self.args);def loop(nloop, nsec): print 'start loop', nloop, 'at:', ctime(); sleep(nsec); print 'loop', nloop, 'done at:', ctime();def main(): print 'starting at:', ctime(); threads = []; nloops = range(len(loops)); for i in nloops: t = MyThread(loop, (i, loops[i]), loop.__name__); threads.append(t); for i in nloops: threads[i].start(); for i in nloops: threads[i].join(); #join() wait the thread over. print 'all NONE at:', ctime(); if __name__ == '__main__': main();
0 0
- Python核心编程 第18章 多线程
- python核心编程---读书笔记:第18章 多线程编程
- 《Python核心编程》第2章 习题
- 《Python核心编程》第3章 习题
- 《Python核心编程》第5章 习题
- 《Python核心编程》第6章 习题
- 《Python核心编程》第7章 习题
- 《Python核心编程》第8章 习题
- 《Python核心编程》第9章 习题
- 《Python核心编程》第10章 习题
- 《Python核心编程》第11章 习题
- 《Python核心编程》第12章 习题
- python核心编程第13章答案
- 《Python核心编程》第6章 习题
- 《Python核心编程》第7章 习题
- 《Python核心编程》第13章 习题
- python核心编程 第3章
- 《python核心编程》 第4章
- # 工程经济学第4
- (2.2.3)Java之美[从菜鸟到高手演变]之设计模式二:结构型模式
- wsmhzy
- 安卓的各种动画资源
- html代码与xhtml代码的区别
- Python核心编程 第18章 多线程
- 如何用电脑共享wifi,解决信号不稳定
- 哈理工校园编程练习赛杭电 acm 4451 C . Dressing
- 折半查找
- 敏捷软件开发 原理、模式与实践 读书笔记
- 透过stats命令分析Memcached的内部状态
- String学习
- Nth Largest Value
- 10000 pcs free gift of chinese top grade brown film faced plywood