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

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

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()

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 高h短篇辣肉各种姿势bl | 4虎影视国产在线观看精品 4s4s4s4s色大众影视 | 国产免费一区二区三区 | 国产一卡2卡3卡四卡精品网站 | 国模一区二区三区视频一 | 国产a一级毛片午夜剧院 | 亚洲精品卡一卡2卡3卡4卡 | 亚洲欧美日韩国产综合专区 | 天天做天天爱天天综合网 | 精品久久久久亚洲 | 99热99re| 免费人成在线观看69式小视频 | 18free性欧美另类hd | 亚洲精品成人a | 欧美一级视 | 欧美成人三级伦在线观看 | 美女被狂揉下部羞羞动漫 | 嗯啊在线观看免费影院 | 美女被网站 | 亚洲美女人黄网成人女 | 超级乱淫寡妇 | 美女被躁爽死 | 狠狠色狠狠色综合日日小蛇 | 2022国产麻豆剧传媒古装 | jiizz亚洲护士厕所 | 欧美破处女视频 | 欧美va免费精品高清在线 | 色图大全| 小sao货ji巴cao死你视频 | av在线色 | 国产成人综合亚洲亚洲欧美 | 铁牛tv 在线观看 | 美女扒开胸罩露出胸大乳 | 亚洲国产成人久久精品hezyo | 第一福利在线导航 | 久久精品视在线观看85 | 午夜看片a福利在线观看 | 处女摘花视频 | 污小说h| 精品一区heyzo在线播放 | 调教处男 |