python多线程

本文介绍了Python中的单线程与多线程概念,并通过实例演示了如何使用threading模块创建和运行多线程,包括线程的启动、执行流程及线程间的并行执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概念

        单线程:串行执行,即执行流程在一条线上

        多线程:并行执行,即执行流程在多条线上

多任务可以由多进程完成,也可以由一个进程的多个线程完成。

进程由若干个线程组成,一个进程至少包含一个线程。

线程是操作系统直接支持的执行单元,许多高级语言都是内置多线程的支持。python也不例外。

二、python中多线程的库介绍:

    thread 和threading两个标准库

    thread是低级库;

    threading是高级库,对thread进行了封装。绝大多数情况,我们只需要使用threading 这个高级模块

    启动一个线程就是把一个函数传入并创建Thread实例,然后调用start()开始执行。

举例说明:(在python3.6上执行的,python2要改动地方不多)

#多线程基础
import threading
class A(threading.Thread):
    def __int__(self):
        #初始化该线程
        threading.Thread.__init__(self)
    def run(self):
        #该线程要执行的任务
        for i in range(10):
            print ("我是线程A")
class B(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
    def run(self):
        for i in range(10):
            print ("我是线程B")
#实例化为线A为t1
t1 = A()
#启动线程
t1.start()
#实例化线程B为t2
t2 = B()
#启动线程t2,此时与t1同时执行
t2.start()

输出结果,混合在一起,说明并行执行的,(但是有个奇怪的梗,不全是混合的,无解=_=)

                                                       

试了廖雪峰给的一个例子:

import time
import threading

#新线程执行的代码:
def loop():
    print ("thread %s is running...." % threading.current_thread().name)
    n = 0
    while n < 5:
        n = n+1
        print ('thread %s >>> %d'% (threading.current_thread().name,n))    # %(变量1,变量2...)
        time.sleep(1)
    print ( "thread %s is running..."%threading.current_thread().name)

print ( "thread %s is running..."%threading.current_thread().name)
t = threading.Thread(target = loop,name='LoopThread')
t.start()
t.join()
print ("thread %s ended" %threading.current_thread().name)

输出结果:               

                                         

任何进程会默认启动一个线程    ,我们把该线程称为主线程,主线程又可以启动新的线程,python的threading模块有个current_thread()函数,它永远返回当前线程的实例。主线程实例的名字叫MainThread,子线程的名字在创建时指定,我们用LoopThread命名子线程。名字仅仅在打印时用来显示,完全没有其他意义,如果不起名字Python就自动给线程命名为Thread-1,Thread-2......

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值