python初识线程

88 阅读2分钟

“开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 4 天,点击查看活动详情

0 环境

  • 编辑器:webstorm或者vscode
  • 系统版本:windows10
  • 编辑器版本:最新
  • 浏览器:谷歌

1 参考文档

[参考教程https://www.geeksforgeeks.org/multithreading-python-set-1/)

join方法

2 前言

如果对多线程有兴趣,如下图所示,可以看上面的那个参考教程,写的比较清楚。

image.png

3 怎么实现一个线程

首先引/导入标准库。

import threading

然后一个新的线程,再创建一个Thread对象,这里需要知道的两个参数:1、target:你要该线程执行的函数。2、args:给线程要执行函数传递参数。

import threading

def demo():
    print("hello world")

thread = threading.Thread(target=demo)
print(f'thread --> {thread}')

image.png

怎么跑这个thred呢,使用start方法来启动,写法就是thread.start(),效果如下图:

image.png

有启动就有退出/停止,正常是线程执行完毕后,会自动关闭,但是遇到一些情况需要手动中止呢,一种利用利用setDaemon(True),还有一种就是强行杀死进程,使用inspect模块和ctypes模块,获取它的id标识,然后关闭它。

现在需要执行有入参的函数,args就可以用到了,如下图:

import threading

# 有参情况
def demo1(a):
    print(f"hello world,{a}")

for item in ['第一天', '第二天', '第n天']:
    thread = threading.Thread(target=demo1, args=(item,))
    thread.start()

image.png

4 常见的线程参数

比如需要知道当前线程是否还存活,记录它的线程id和名字。 image.png

5 小结

想让线程跑起来,先导入标准库,创建threading.Thread(xxx),并且在括号中target一定别忘加了,它对应要启动的函数,假如你的函数有入参,并且你也想传参,那么args也要加上,传值进去就行,对了,它是一个元组,别忘了。还要了解一下,常见的线程参数,说不定以后有可能遇到。