激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

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

服務(wù)器之家 - 腳本之家 - Python - Python中運(yùn)行并行任務(wù)技巧

Python中運(yùn)行并行任務(wù)技巧

2019-11-15 22:48junjie Python

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

示例

標(biāo)準(zhǔn)線程多進(jìn)程,生產(chǎn)者/消費(fèi)者示例:
Worker越多,問題越大

復(fù)制代碼代碼如下:


# -*- 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能夠處理集合按順序遍歷,最終將調(diào)用產(chǎn)生的結(jié)果保存在一個(gè)簡(jiǎn)單的集合當(dāng)中。

Python中運(yùn)行并行任務(wù)技巧

 

復(fù)制代碼代碼如下:


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

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 毛片区 | 高清中文字幕在线 | 成人aaaa免费全部观看 | 日本精品视频一区二区三区四区 | 午夜精品网 | 国产亚洲精品久久久久5区 99精品视频在线 | 香蕉秀| 成人综合免费视频 | www深夜成人| 羞羞电影在线观看www | av免费在线网 | 九九色精品 | 欧美一级做一级爱a做片性 91在线视频观看 | 依人网站| 成人毛片在线 | 欧美成人影院 | 欧美成人综合视频 | 欧美高清另类自拍视频在线看 | 欧美精品久久天天躁 | 免费观看高清视频网站 | 国产999视频在线观看 | 午夜精品小视频 | 亚洲一区二区观看播放 | 伊人yinren22综合网色 | 国产91精品久久久久久久 | 欧美日本日韩 | 爱射av| 日韩 综合 | 1区2区3区在线观看 欧美特黄a | 欧美黄色一级片在线观看 | 午夜视频福利 | 午夜国产福利 | 国产精品看片 | 久久久久久久久亚洲精品 | 国产成人高清成人av片在线看 | 国产二区三区在线播放 | 看国产一级毛片 | 日韩精品中文字幕在线观看 | 日韩av成人 | 老师你怎么会在这第2季出现 | 久久av免费观看 |