python作为一个简单的脚本语言在工作中会经常用到,但奈何执行大量重复性任务时单线程效率低下,这时可以通过多线程并行执行大大提高代码执行效率。
Python3多核并行执行完整示例:(可以复制粘贴到IDLE运行一下)
import threading, time
from queue import Queue
def basic_worker(queue):
while True:
item = queue.get()
print(str(item)+"\r\n")
queue.task_done()
def basic():
ts = time.time()
queue = Queue()
for i in range(3):
t = threading.Thread(target=basic_worker,args=(queue,))
t.daemon = True
t.start()
for item in range(100): #创建任务队例
queue.put(item)
queue.join()
print('Took {}'.format(time.time() - ts)) #执行结束,输出执行时长
if __name__ == '__main__':
basic()
并行计算主要是通过下面这8行代码来实现的:
queue = Queue() #初始化一个队例
for i in range(3):
t = threading.Thread(target=basic_worker,args=(queue,))
t.daemon = True
t.start()
for item in range(100): #创建任务队例
queue.put(item)
queue.join()
上面的代码创建了3个线程(具体线程数量可根据任务复杂度及机器配置进行调整),并通过queue.put(item) 写入任务队例及所需参数,最后通过queue.join() 方法告诉程序queue写入完毕开始执行队例。
记得将basic_worker() 方法内的代码替换为你所需要执行的任务代码即可。