python高级编程——线程和线程池
# 1、创建Thread类实例,传给它一个函数
# 线程的属性和方法
def task(task_id, task_time):
print("start task", task_id, "at", ctime())
sleep(task_time)
print("task", task_id, "done at", ctime()) if __name__ == "__main__":
print("准备创建线程")
# 创建Thread类实例,传给它一个函数,传参也是关键字参数
t = threading.Thread(target=task, args=(1, 2))
print("准备启动线程")
# 两种设置守护线程的方式,
# 守护线程和守护进程就是主进程运行完,守护进(线)程立刻结束
# t.setDaemon(True)
t.daemon = True
t.start()
# 名字以Thread-N起名,N从1开始
print("线程的名字:", t.name)
print("线程的id:", t.ident)
print("线程已经启动")
# 2、创建Thread的实例,传给他一个可调用的类的实例化对象
# 重写方法__call__
def task(task_id, task_time):
print("start task", task_id, "at", ctime())
sleep(task_time)
print("task", task_id, "done at", ctime()) # 创建一个简单的类
class ThreadFunc(object):
def __init__(self, *args):
super().__init__()
self.args = args # __call__功能是使得实例化对象也可以调用
def __call__(self, *args, **kwargs):
task(*self.args) if __name__ == "__main__":
t = threading.Thread(target=ThreadFunc(1, 2))
t.start()
t.join()
③派生Thread的子类,并创建子类的实例(推荐)
# 3、派生Thread的子类,并创建子类的实例(推荐)
def task(task_id, task_time):
print("start task", task_id, "at", ctime())
sleep(task_time)
print("task", task_id, "done at", ctime()) class MyThread(threading.Thread):
def __init__(self, *args):
super().__init__()
self.args = args def run(self):
task(*self.args) if __name__ == "__main__":
myThread = MyThread(1, 2)
# 这里不是调用run方法,和进程的使用差别不大
myThread.start()
myThread.join()
总结:在一个进程的多个线程是可以共享进程的全局变量的,但是多个线程若同时修改这个全局变量,就可能造成多个线程之间对全局变量的混乱(即线程是不安全的)下一篇就是就要讲到锁机制了。
python高级编程——线程和线程池的更多相关文章
- python高级编程——进程和进程池
python提供了一个跨平台的多进程支持——multiprocessing模块,其包含Process类来代表一个进程对象 1.Process语法结构:(注: 传参的时候一定使用关键字传参) 2.自定义 ...
- 第十章:Python高级编程-多线程、多进程和线程池编程
第十章:Python高级编程-多线程.多进程和线程池编程 Python3高级核心技术97讲 笔记 目录 第十章:Python高级编程-多线程.多进程和线程池编程 10.1 Python中的GIL 10 ...
- (九) 一起学 Unix 环境高级编程 (APUE) 之 线程
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- (十) 一起学 Unix 环境高级编程 (APUE) 之 线程控制
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- python高级编程技巧
由python高级编程处学习 http://blog.sina.com.cn/s/blog_a89e19440101fb28.html Python列表解析语法[]和生成 器()语法类似 [expr ...
- 第九章:Python高级编程-Python socket编程
第九章:Python高级编程-Python socket编程 Python3高级核心技术97讲 笔记 9.1 弄懂HTTP.Socket.TCP这几个概念 Socket为我们封装好了协议 9.2 cl ...
- 第十一章:Python高级编程-协程和异步IO
第十一章:Python高级编程-协程和异步IO Python3高级核心技术97讲 笔记 目录 第十一章:Python高级编程-协程和异步IO 11.1 并发.并行.同步.异步.阻塞.非阻塞 11.2 ...
- python高级编程:有用的设计模式3
# -*- coding: utf-8 -*-__author__ = 'Administrator'#python高级编程:有用的设计模式#访问者:有助于将算法从数据结构中分离出来"&qu ...
- python高级编程:有用的设计模式2
# -*- coding: utf-8 -*- __author__ = 'Administrator' #python高级编程:有用的设计模式 #代理 """ 代理对一 ...
- python高级编程:有用的设计模式1
# -*- coding: utf-8 -*-__author__ = 'Administrator'#python高级编程:有用的设计模式#设计械是可复用的,某种程序上它对软件设计中觉问题提供的语言 ...
随机推荐
- infinity新标签页失效
安装infinity新标签页后,无法生效,或者infinity新标签页突然失效了. 驱动精灵的问题 驱动精灵安装后,还会安装其它的软件,在卸载后,安装的软件还存在. 解决办法 光卸载驱动精灵还不够,还 ...
- django中添加新的filter
给模板传递了一个字典,却发现无法在模板中直接通过key获得value. 查阅资料后,这个问题可以通过添加自定义的filter来解决. 首先在app目录下创建一个templatetags目录,并在它的下 ...
- 201871010115 马北 《面向对象程序设计(java)》 第6-7周学习总结
项目 内容 <面向对象程序设计(java)> https://home.cnblogs.com/u/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.c ...
- windows 上jenkins slave 执行脚本提示成功,但是没有运行
控制台结果,但是脚本没有运行Started by user admin Building remotely on test_1110 in workspace D:\jenkins\workspace ...
- 10-tensorflow-tf.concat()
Concatenates tensors along one dimension. t1 = [[1, 2, 3], [4, 5, 6]] t2 = [[7, 8, 9], [10, 11, 12]] ...
- 反射&异常
反射 通过字符串映射或修改程序运行时的状态.属性.方法.python中的反射功能是由以下四个内置函数提供:hasattr.getattr.setattr.delattr,改四个函数分别用于对对象内部执 ...
- TCP的三次握手和四次挥手详解
相对于SOCKET开发者,TCP创建过程和链接折除过程是由TCP/IP协议栈自动创建的.因此开发者并不需要控制这个过程.但是对于理解TCP底层运作机制,相当有帮助. TCP报文格式 TCP的包如下: ...
- Session技术
Session 学习: 问题: Request 对象解决了一次请求内的不同 Servlet 的数据共享问 题,那么一个用户的不同请求的处理需要使用相同的数据怎么办呢? 解决: 使用 session 技 ...
- python的设计模式之MVC模式
模型-视图-控制器模式 关注点分离(Separation of Concerns,SoC)原则是软件工程相关的设计原则之一.SoC原则背后的思想是将一个应用切分成不同的部分,每个部分解决一个单独的关注 ...
- [LeetCode] 632. Smallest Range Covering Elements from K Lists 覆盖K个列表元素的最小区间
You have k lists of sorted integers in ascending order. Find the smallest range that includes at lea ...