一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python中運行并行任務技巧

Python中運行并行任務技巧

2019-11-15 22:48junjie Python

這篇文章主要介紹了Python中運行并行任務技巧,本文給出了兩個示例,并用map來處理并行任務,需要的朋友可以參考下

示例

標準線程多進程,生產者/消費者示例:
Worker越多,問題越大

復制代碼代碼如下:


# -*- coding: utf8 -*-

 

import os
import time
import Queue
import threading
from PIL import Image

def create_thumbnail(filename, size=(128, 128)):
    try:
        fp, fmt = filename.rsplit('.', 1)
        im = Image.open(filename)
        im.thumbnail(size, Image.ANTIALIAS)
        im.save((fp + '_'+'x'.join(str(i) for i in size) + '.'+fmt), im.format)
        return '%s thumbnail success!' % filename
    except Exception:
        return '%s thumbnail failed!' % filename


def get_image_paths(folder):
    return [os.path.join(folder, f) for f in os.listdir(folder) if 'png' in f]


class Consumer(threading.Thread):
    def __init__(self, queue):
        threading.Thread.__init__(self)
        self._queue = queue

    def run(self):
        while True:
            content = self._queue.get()
            if isinstance(content, str) and content == 'quit':
                break
            respone = create_thumbnail(content)
        print 'Bye bye!'


def Producer():
    filenames = get_image_paths('images')
    queue = Queue.Queue()
    worker_threads = build_worker_pool(queue, 4)
    start_time = time.time()

    for filename in filenames:
        queue.put(filename)
    for worker in worker_threads:
        queue.put('quit')
    for worker in worker_threads:
        worker.join()

    print time.time() - start_time


def build_worker_pool(queue, size):
    workers = []
    for _ in range(size):
        worker = Consumer(queue)
        worker.start()
        workers.append(worker)
    return workers


if __name__ == '__main__':
    Producer()

 

map

Map能夠處理集合按順序遍歷,最終將調用產生的結果保存在一個簡單的集合當中。

Python中運行并行任務技巧

 

復制代碼代碼如下:


# -*- coding: utf8 -*-

 

import os
import time
from multiprocessing import Pool
from PIL import Image

def create_thumbnail(filename, size=(128, 128)):
    try:
        fp, fmt = filename.rsplit('.', 1)
        im = Image.open(filename)
        im.thumbnail(size, Image.ANTIALIAS)
        im.save((fp + '_'+'x'.join(str(i) for i in size) + '.'+fmt), im.format)
        return '%s thumbnail success!' % filename
    except Exception:
        return '%s thumbnail failed!' % filename


def get_image_paths(folder):
    return [os.path.join(folder, f) for f in os.listdir(folder) if 'png' in f]


def main():
    filenames = get_image_paths('images')
    start_time = time.time()
    
    pool = Pool(4)
    pool.map(create_thumbnail, filenames)
    pool.close()
    pool.join()

    print time.time() - start_time


if __name__ == '__main__':
    main()

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 美国女艳星brandilove | 欧美日韩一本 | 日b视频免费看 | 国产欧美日韩专区毛茸茸 | 奇米影视在线观看 | 菠萝视频污 | 美女扒开肌肌让男人桶 | 俺来操 | 亚洲欧洲日产v特级毛片 | 暖暖 免费 高清 日本 在线1 | 亚洲免费色| 99热精品成人免费观看 | 亚洲成在人线久久综合 | 亚洲精品国产AV成人毛片 | 日韩精品视频在线观看免费 | 国产精品久久久精品视频 | www国产91| 亚洲日韩中文字幕一区 | 亚洲成人77777 | 男女拍拍拍免费视频网站 | 午夜神器18以下不能进免费 | 国产按摩系列 | 亚洲欧美天堂综合久久 | 欧美人shou交在线播放 | 日本人成大片在线 | 免费看一级大片 | 久久免费资源福利资源站 | 国产免费又粗又猛又爽视频国产 | 成人国产一区 | 亚洲免费在线观看 | 日日草视频 | 操男孩| 男男互操文 | 欧美图片小说 | 青青草影院在线观看 | 男女污网站 | 丝瓜视频黄色在线观看 | 无限资源在线观看高清 | 女暴露狂校园裸露小说 | 女海盗斯蒂内塔的复仇2免费观看 | 国产精品久久久久毛片真精品 |