python实现多线程
- python实现多线程的包有thread和threading
thread:
- 在python3中,被改成了_thread
- thread的使用,启动多线程的语句如下,有两个参数,一个是需要运行的函数名,一个是需要运行的函数的参数作为元组传入。如果没有参数则也要使用空元组。如果只有一个参数,要注意加逗号。
_thread.start_new_thread(funcname,(parameters))
threading:
- threading是常用的包。
使用方式1
- 直接使用threading.Thread生成Thread实例。target是需要以线程方式运行的函数名,args是参数,与上一种方式的参数要求相同。
t = thread.Thread(target=xxx,args=(,))
t.start() # 开始线程
t.join() # 等待线程结束
使用方式2
- 直接继承自threading.Thread
- 此种使用方式,需要重写run函数!!
# 首先定义一个类,继承自threading.Thread
clss MyThread(threading.Thread):
# init函数可以不写,如果写的话,要调用父类的构造函数
def __init__(self, arg):
super(MyThread, self).__init__()
self.arg = arg
# 必须重写run函数,run函数是线程启动的时候,真正执行的内容
def run(self):
pass
多进程和多线程的相关概念
- 进程指的是程序运行的一个状态,每个进程有自己独立的运行环境。
- 线程可以理解为轻量级的进程,是进程的一个独立运行的片段。
- 一个进程可以有多个线程,并且一个进程的多个线程之间共享数据和上下文运行环境。此时要考虑共享互斥问题。
- 全局解释器锁GIL:解决互斥
- 多线程可以提高cpu等资源的利用率。
注:本文是本人根据北京图灵学院的python课程自己整理的笔记哒,转载请注明出处哈~