py并发/_thread实现多线程笔记

_thread实现多线程

如果要进行多线程的开发,那么一定要使用Python提供的模块来完成(因为整个多线程的实现都牵扯到与操作系统的底层交互,所以这部分的交互全部交由Python虚拟机完成),但是早期的Python提供的多线程开发模块为“_thread”,这次首先对这个模块的使用进行一些基本的说明。

python多线程

1
2
3
4
5
6
7
8
9
10
11
import _thread,time
def thread_handle(thread_name, delay): # 定义多线程的处理函数
for num in range(5):
time.sleep(delay) # 追加一个延迟操作
print("[%s]num = %s" % (thread_name,num))
def main(): # 主函数
for item in range(5): # 通过循环的形式创建线程
_thread.start_new_thread(thread_handle,("Thread - %s" % item,1))
time.sleep(200) # 延迟等待
if __name__ == "__main__":
main()

[Thread - 1]num = 0[Thread - 2]num = 0[Thread - 0]num = 0

[Thread - 4]num = 0
[Thread - 3]num = 0
[Thread - 1]num = 1[Thread - 2]num = 1
[Thread - 3]num = 1

[Thread - 4]num = 1
[Thread - 0]num = 1
[Thread - 1]num = 2[Thread - 2]num = 2[Thread - 4]num = 2[Thread - 0]num = 2

[Thread - 3]num = 2

[Thread - 2]num = 3[Thread - 1]num = 3[Thread - 3]num = 3[Thread - 4]num = 3

[Thread - 0]num = 3

[Thread - 4]num = 4[Thread - 1]num = 4[Thread - 3]num = 4

[Thread - 0]num = 4

[Thread - 2]num = 4

通过当前的执行结果可以发现,若干个线程彼此之间都是可以直接进行并行执行的,所以这里面会牵扯到资源的争抢与运行,随着你个人电脑硬件配置的水平,执行的速度肯定会越来越快。

在python3的开发宝里面,对于“_thread”多线程的实现模块前面追加了一个“_”(在Python2的时候并没有)核心的目的就是不建议开发者继续使用此模块进行多线程的开发了,而是使用threading模块来完成多线程编写,因为这个新的模块内部提供了大量方便的处理类,可以方便的进行线程同步的控制。


py并发/_thread实现多线程笔记
https://blog.wangxk.cc/2020/02/03/py并发-thread实现多线程笔记/
作者
Mike
发布于
2020年2月3日
许可协议