python语言以容易入门,适合应用开发,编程简洁,第三方库多等等诸多优点,并吸引广大编程爱好者。但是也存在一个被熟知的性能瓶颈:python解释器引入GIL锁以后,多CPU场景下,也不再是并行方式运行,甚至比串行性能更差。注定这门语言在某些方面是有天花板的,对于一些并行要求高的系统,python可能不再成为首选,甚至是完全不考虑。但是事情也并不是绝对悲观的,我们已经看到有一大批人正在致力优化这个特性,新版本较老版本也有了一定改进,一些核心模块我们也可以选用其它模块开发等等措施。

1、python多线程编程

         threading是python实现多线程编程的常用库,有两种方式可以实现多线程:1、调用库接口传入功能函数和参数执行;2、自定义线程类继承threading.Thread,然后重写__init__和run方法。

         1、调用库接口传入功能函数和参数执行

import threading
import queue
import time

'''
实现功能:定义一个FIFO的queue,10个元素,3个线程同时来获取
'''

# 初始化FIFO队列
q = queue.Queue()
for i in range(10):
    q.put(i)
print("%s : Init queue,size:%d"%(time.ctime(),q.qsize()))

# 线程功能函数,获取队列数据
def run(q,threadid):
    is_empty = False
    while not is_empty:
        if not q.empty():
            data  = q.get()
            print("Thread %d get:%d"%(threadid,data))
            time.sleep(1)
        else:
            is_empty = True

# 定义线程列表
thread_handler_lists = []
# 初始化线程
for i in range(3):
    thread = threading.Thread(target=run,args = (q,i))
    thread.start()
    thread_handler_lists.append(thread)
# 等待线程执行完毕
for thread_handler in thread_handler_lists:
    thread_handler.join()

print("%s : End of progress"%(time.ctime()))
View Code

相关文章: