多线程的创建和使用

from threading import Thread
import threading
import time
data = []
def download_image(url,num):
"""下载图片"""
global data
time.sleep(5)
print(url,num)
data.append(num)

def read_data():
global data
for i in data :
print(i)

if name == 'main':
#获取当前线程的名称threading.currentThead().name
print('主线程开启',threading.currentThread().name)
#创建一个线程
"""
target =None :线程要执行的目标函数
name=None:创建线程时指定线程的名称
args=():为目标函数,传递参数,(tuple元祖类型)
"""
thread_sub1 = Thread(target=download_image,
name='下载线程',
args=('http://img2.imgtn.bdimg.com/it/u=3908481601,2728201109&fm=26&gp=0.jpg',1)
)
thread_sub2 = Thread(target=read_data,
name='下载线程',
)

#是否开启守护进程(开启线程之前设置)
# daemon:False,在主线程结束的时候,会检测子线程任务是否结束,如果子线程中任务没有结束,则会等待子线程正常结束任务
# daemon:True 在主线程结束的时候,会检测子线程任务是否结束,如果子线程中任务没有结束,则会让子线程跟随主线程一起结束

# thread_sub1.daemon = True
thread_sub1.start()

#join():阻塞,等待子线程中的任务执行完毕后,在再回到主线程中继续执行
thread_sub1.join()

thread_sub2.start()

thread_sub2.join()


print('主线程结束',threading.current_thread().name)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 写在前面的话 代码中的# > 表示的是输出结果 输入 使用input()函数 用法 注意input函数输出的均是字...
    FlyingLittlePG阅读 2,894评论 0 8
  • 线程 操作系统线程理论 线程概念的引入背景 进程 之前我们已经了解了操作系统中进程的概念,程序并不能单独运行,只有...
    go以恒阅读 1,671评论 0 6
  • Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对...
    顺毛阅读 4,238评论 4 16
  • 一、线程介绍 1.1、线程,有时被称为轻量进程(Lightweight Process,LWP),是程序执行流的最...
    IIronMan阅读 1,343评论 0 2
  • 天天向上_hbh阅读 152评论 0 2