最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python?常用模塊threading和Thread模塊之線程池

 更新時(shí)間:2022年06月13日 09:31:19   作者:??孤寒者????  
這篇文章主要介紹了Python?threading和Thread模塊之線程池,線程池如消費(fèi)者,負(fù)責(zé)接收任務(wù),并將任務(wù)分配到一個(gè)空閑的線程中去執(zhí)行。并不關(guān)心是哪一個(gè)線程執(zhí)行的這個(gè)任務(wù),具體介紹需要的小伙伴可以參考下面文章詳細(xì)內(nèi)容

1. 池的概念

主線程:

相當(dāng)于生產(chǎn)者,只管向線程池提交任務(wù)。 并不關(guān)心線程池是如何執(zhí)行任務(wù)的。

線程池:

相當(dāng)于消費(fèi)者,負(fù)責(zé)接收任務(wù),并將任務(wù)分配到一個(gè)空閑的線程中去執(zhí)行。并不關(guān)心是哪一個(gè)線程執(zhí)行的這個(gè)任務(wù)。

2. 自定義線程池

# -*- coding: utf-8 -*-
from threading import Thread
from queue import Queue
import time

class ThreadPool:
    # 初始化
    def __init__(self, n):
        self.queue = Queue()
        for i in range(n):
            # 創(chuàng)建線程
            Thread(target=self.worker, daemon=True).start()		#daemon是開啟守護(hù)線程

    # 執(zhí)行任務(wù)
    def worker(self):
        while True:
            func, args, kwargs = self.queue.get()
            func(*args, *kwargs)
            self.queue.task_done()

    # 獲取任務(wù),將任務(wù)添加到隊(duì)列中
    def apply_async(self, target, args=(), kwargs={}):
        self.queue.put((target, args, kwargs))
    # 阻塞
    def join(self):
        self.queue.join()
def fun(x):
    print('愛孤寒者 第%s次' % x)
    time.sleep(3)
    print('帥哥美女就關(guān)注同名微信公眾號(hào)【孤寒者】啦~')

# 開兩個(gè)線程
t = ThreadPool(2)
# 提交10個(gè)任務(wù)
for i in range(10):
    t.apply_async(fun, args=(i,))
t.join()

3. 使用Python內(nèi)置線程池

# -*- coding: utf-8 -*-
from multiprocessing.pool import ThreadPool
import time
pool = ThreadPool(2)  # 創(chuàng)建兩個(gè)線程
def funa(x, y):
    print('%s好好學(xué)習(xí)' % x)
    time.sleep(3)
    print('天天向上')
def funb(x, y):
    print('%shello' % x)
    time.sleep(3)
    print('world')

# 我們這就是有一個(gè)線程池,里面有兩個(gè)等待處理任務(wù)的線程,然后這兩個(gè)函數(shù)就是兩個(gè)任務(wù),
# 線程池里一個(gè)線程處理一個(gè),所以會(huì)同時(shí)輸出!如果多于兩個(gè)任務(wù)就會(huì)執(zhí)行等待sleep

pool.apply_async(funa, args=('我們要————', 2))  # 將任務(wù)添加到線程池
pool.apply_async(funb, args=('大家要————', 4))

pool.close()  # close之后則無(wú)法向線程池提交任務(wù)

# 內(nèi)置線程池,自帶守護(hù)線程,主線程結(jié)束,子線程也跟著結(jié)束
# 所以需要加阻塞,否則主線程一結(jié)束,子線程也跟著結(jié)束,無(wú)輸出
pool.join()  # 在join之前可使用終止線程,直接終止線程pool:  pool.terminate()

print('這是程序的最后一行,執(zhí)行到這里,主線程結(jié)束')

4. 池的其他操作

操作一: close - 關(guān)閉提交通道,不允許再提交任務(wù);

操作二: terminate - 中止進(jìn)程池,中止所有任務(wù) 。

拓展: JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式,易于人閱讀和編寫。 是用來(lái)存儲(chǔ)和交換文本信息的語(yǔ)法。

數(shù)據(jù)在名稱/值對(duì)中 數(shù)據(jù)由逗號(hào)分隔 大括號(hào)保存對(duì)象 中括號(hào)保存數(shù)組

使用 JSON 函數(shù)需要導(dǎo)入 json 庫(kù):import json。

json,用于字符串 和 python數(shù)據(jù)類型間進(jìn)行轉(zhuǎn)換json模塊提供了四個(gè)功能:dumps、dump、loads、load

  • 1.json.dumps 將 Python 對(duì)象編碼成 JSON 數(shù)據(jù)
  • 2.json.dump 將 JSON 數(shù)據(jù)通過(guò)特殊的形式轉(zhuǎn)換為只有 Python 認(rèn)識(shí)的字符串并寫入文件
  • 3.json.loads 將已編碼的 JSON 數(shù)據(jù)解碼為 Python 對(duì)象
  • 4.json.load 將一個(gè)包含 JSON 格式數(shù)據(jù)的可讀文件解碼為一個(gè) Python 對(duì)象并寫入文件

到此這篇關(guān)于Python 常用模塊threading和Thread模塊之線程池的文章就介紹到這了,更多相關(guān)Python線程池內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python threading模塊的使用指南

    python threading模塊的使用指南

    python的thread模塊是底層的模塊,python的threading模塊是對(duì)thread做了一些包裝的,可以更加方便的被使用。本文詳細(xì)的講述了threading模塊的用法
    2021-06-06
  • python實(shí)現(xiàn)自動(dòng)登錄

    python實(shí)現(xiàn)自動(dòng)登錄

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)自動(dòng)登錄,填充網(wǎng)頁(yè)表單,從而自動(dòng)登錄WEB門戶,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • python使用正則表達(dá)式來(lái)獲取文件名的前綴方法

    python使用正則表達(dá)式來(lái)獲取文件名的前綴方法

    今天小編就為大家分享一篇python使用正則表達(dá)式來(lái)獲取文件名的前綴方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • Moviepy模塊實(shí)現(xiàn)視頻添加圖片水印

    Moviepy模塊實(shí)現(xiàn)視頻添加圖片水印

    本文主要介紹了Moviepy模塊實(shí)現(xiàn)視頻添加圖片水印,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Python實(shí)戰(zhàn)之畫哆啦A夢(mèng)(超詳細(xì)步驟)

    Python實(shí)戰(zhàn)之畫哆啦A夢(mèng)(超詳細(xì)步驟)

    這篇文章主要介紹了Python實(shí)戰(zhàn)之畫哆啦A夢(mèng)(超詳細(xì)步驟),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • Python中random模塊常用方法的使用教程

    Python中random模塊常用方法的使用教程

    這篇文章主要給大家介紹了關(guān)于Python中random模塊常用方法的使用教程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Python使用matplotlib繪制三維參數(shù)曲線操作示例

    Python使用matplotlib繪制三維參數(shù)曲線操作示例

    這篇文章主要介紹了Python使用matplotlib繪制三維參數(shù)曲線操作,結(jié)合實(shí)例形式分析了Python使用matplotlib的數(shù)值計(jì)算與圖形繪制相關(guān)操作技巧,需要的朋友可以參考下
    2019-09-09
  • Django自定義YamlField實(shí)現(xiàn)過(guò)程解析

    Django自定義YamlField實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了Django自定義YamlField實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • python如何求2-1000內(nèi)的所有回文素?cái)?shù)

    python如何求2-1000內(nèi)的所有回文素?cái)?shù)

    這篇文章主要介紹了python如何求2-1000內(nèi)的所有回文素?cái)?shù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Python實(shí)現(xiàn)的列表排序、反轉(zhuǎn)操作示例

    Python實(shí)現(xiàn)的列表排序、反轉(zhuǎn)操作示例

    這篇文章主要介紹了Python實(shí)現(xiàn)的列表排序、反轉(zhuǎn)操作,結(jié)合實(shí)例形式分析了Python針對(duì)列表的sort排序、以及基于reverse、切片的反轉(zhuǎn)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-03-03

最新評(píng)論

乌苏市| 富蕴县| 桦甸市| 阆中市| 清徐县| 安溪县| 柳林县| 正镶白旗| 松滋市| 花莲县| 诏安县| 鄯善县| 青海省| 桐庐县| 阳山县| 碌曲县| 开原市| 寿光市| 天等县| 鲜城| 磐石市| 信宜市| 英山县| 邢台县| 东阿县| 望谟县| 白玉县| 大埔区| 保亭| 白沙| 惠水县| 屏东县| 浪卡子县| 板桥市| 禹城市| 东安县| 濮阳市| 浦北县| 蓝山县| 莱州市| 佛教|