python 多线程分析

2020-04-11  本文已影响0人  小云1121

以下代码结果可看到python的多线程执行时间比单线程还慢,是因为GIL全局锁影响了python的执行效率,具体可参考:https://blog.csdn.net/qq_39338671/article/details/87457812

#! /usr/bin/python

#-*- coding:UTF-8 -*-

from threading import Thread,current_thread

import time

def decorator(func):

    def wrapper(*args, **kwargs):

        start_time = time.time()

        func()

        end_time = time.time()

        print("total time:{}".format(end_time - start_time))

    return wrapper

def my_count():

        j=0

        for i in range(0,2):

                print("start %s %s\n" % (current_thread().name,time.time()))

                for j in range(1000000):

                        j=j+1

                print("end %s %s\n" % (current_thread().name,time.time()))

        return True

#线程串行

@decorator

def main1():

        thread_array={}

        for tid in range(2):

                t=Thread(target=my_count)

                t.start()

                t.join()

#线程并发

@decorator

def main2():

        thread_array={}

        for tid in range(2):

                t=Thread(target=my_count)

                t.start()

                thread_array[tid]=t

        for i in range(2):

                thread_array[i].join()

if __name__=='__main__':

        main1()

        main2()

结果:

#串行结果

start Thread-1 1587531413.27

end Thread-1 1587531413.35

start Thread-1 1587531413.35

end Thread-1 1587531413.4

start Thread-2 1587531413.4

end Thread-2 1587531413.45

start Thread-2 1587531413.45

end Thread-2 1587531413.49

total time:0.223469018936

#并发结果

start Thread-3 1587531413.49

start Thread-4 1587531413.5

end Thread-3 1587531413.63

start Thread-3 1587531413.64

end Thread-4 1587531413.64

start Thread-4 1587531413.65

end Thread-3 1587531413.74

end Thread-4 1587531413.74

total time:0.252161979675

上一篇 下一篇

猜你喜欢

热点阅读