python多线程

一、概念

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

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

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

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

线程是操作系统直接支持的执行单元,许多高级语言都是内置多线程的支持。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()

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

                       python多线程_第1张图片                              python多线程_第2张图片  

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

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多线程_第3张图片

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

你可能感兴趣的:(python爬虫,数据分析)