Python多线程入门学习

什么是线程

什么是线程?线程也叫轻量级进程,是操作系统能够进行运算调度最小单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其他线程共享进程所拥有的全部资源。一个线程可以创建撤销另一个线程,同一个进程中的多个线程可以并发执行,经常说的并发就是这个⬅️

为什么要使用多线程

线程在程序中是独立的并发的执行流。与分隔的进程相比,进程中线程之间的隔离程度要小,它们共享内存文件句柄其他进程应有的状态

粗一些(比如我)可以认为:多线程可以实现几乎同步的运行。

这就很棒了,我以前编写的程序都是一步一步来的,但有了多线程就可以同步执行,嘿嘿爽😎

多线程编程的优点

  • 进程之间不能共享内存,但线程之间共享内存非常容易
  • 线程可以并发执行
  • 操作系统在创建进程时,需要为该进程重新分配系统资源,但创建线程的代价则小得多。因此使用多线程来实现多任务并发执行比使用多进程的效率高
  • python语言内置了多线程功能支持,而不是单纯地作为底层操作系统的调度方式,从而简化了python的多线程编程。

快速开始⏩

Python中的多线程模块是threading,直接使用import语句引入即可,如果想简化可以使用from threading import *免去输入threading.,下面是一个简单实例。

import threading
import time,os
def run(n):
    print('task',n)
    time.sleep(1)
    print('2s')
    time.sleep(1)
    print('1s')
    time.sleep(1)
    print('0s')
    time.sleep(1)

if __name__ == '__main__':
    t1 = threading.Thread(target=run,args=('t1',))
    t2 = threading.Thread(target=run,args=('t2',))
    t1.start()
    t2.start()

其中将两条线程给了t1t2,参数target是目标函数,下一个参数args是参数,参数放在元组里面,一个元素最后加一个逗号。

运行结果:

task t1
task t2
2s
2s
1s
1s
0s
0s

并行的执行函数,如果是以前的写法,改写如下

import threading
import time
def run(n):
    print('task', n)
    time.sleep(1)
    print('2s')
    time.sleep(1)
    print('1s')
    time.sleep(1)
    print('0s')
    time.sleep(1)
if __name__=='__main__':
    # t1=threading.Thread(target=run,args=('t1',))
    # t2 = threading.Thread(target=run,args=('t2',))
    # t1.start()
    # t2.start()
    run('t1')
    run('t2')

运行结果:

task t1
2s
1s
0s
task t2
2s
1s
0s

发现是分步执行的,这下入门了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章