python 多线程的使用

发布时间:2019-08-07 14:06:02编辑:auto阅读(1266)

    在实际编程过程中经常需要把任务包装成多进程或者多线程,多进程和多线程的区别在于多线程是内存共享、变量等共享的,多进程的进程间是独立运行的,所以创建多线程还是多进程取决于不同的需求。

    python中因为有全局锁的机制,所以在python中多线程跑的时候其实只是在用一个CPU,尽管如此,多线程跑还是比单线程跑要快很多。


    以threading.Thread来说,在python中创建多线程大致有两种方式。


    方式1

    在子类中调用threading.Thread类

    import threading.Thread

    class Metric_Collector(threading.Thread):

        def __init__(self):

            threading.Thread.__init__(self)

        def run(self):

            print "Testing....."

            time.sleep(10)

    for i in range(10):

        t = Metric_Collector()

        t.start()


    threading.Thread类中也有run()方法,在Metric_Collector类中重写了run()方法,这样写代码读起来比较结构化。


    方式2

    在threading.Thread实例中调用方法

    import threading.Thread

    class Metric_Collector(object):

        def __init__(self):

            pass

        def move(self, var1, var2):

            print "Testing.....%s %s" % (var1, var2)

    collector = Metric_Collector()

    for i in range(10):

        t=threading.Thread(target = colector.move, args = (var1, var2))

        t.start()

    这种方法在使用中比较自由。


关键字