python的threading库_python标准库介绍——31 threading 模块详解
threading 模塊
(可選) ``threading`` 模塊為線程提供了一個(gè)高級接口, 如 [Example 3-1 #eg-3-1] 所示.
它源自 Java 的線程實(shí)現(xiàn). 和低級的 ``thread`` 模塊相同, 只有你在編譯解釋器時(shí)打開了線程支持才可以使用它 .
你只需要繼承 //Thread// 類, 定義好 ``run`` 方法, 就可以創(chuàng)建一 個(gè)新的線程.
使用時(shí)首先創(chuàng)建該類的一個(gè)或多個(gè)實(shí)例, 然后調(diào)用 ``start`` 方法. 這樣每個(gè)實(shí)例的
``run`` 方法都會運(yùn)行在它自的線程里.
====Example 3-1. 使用 threading 模塊====[eg-3-1]
```
File: threading-example-1.py
import threading
import time, random
class Counter:
def _ _init_ _(self):
self.lock = threading.Lock()
self.value = 0
def increment(self):
self.lock.acquire() # critical section
self.value = value = self.value + 1
self.lock.release()
return value
counter = Counter()
class Worker(threading.Thread):
def run(self):
for i in range(10):
# pretend we're doing something that takes 10?00 ms
value = counter.increment() # increment global counter
time.sleep(random.randint(10, 100) / 1000.0)
print self.getName(), "-- task", i, "finished", value
#
# try it
for i in range(10):
Worker().start() # start a worker
*B*Thread-1 -- task 0 finished 1
Thread-3 -- task 0 finished 3
Thread-7 -- task 0 finished 8
Thread-1 -- task 1 finished 7
Thread-4 -- task 0 Thread-5 -- task 0 finished 4
finished 5
Thread-8 -- task 0 Thread-6 -- task 0 finished 9
finished 6
...
Thread-6 -- task 9 finished 98
Thread-4 -- task 9 finished 99
Thread-9 -- task 9 finished 100*b*
```
[Example 3-1 #eg-3-1] 使用了 //Lock// 對象來在全局 //Counter// 對象里創(chuàng)建臨界區(qū)
(critical section). 如果刪除了 ``acquire`` 和 ``release`` 語句, 那么 ``Counter`` 很可能不會到達(dá) 100.
python標(biāo)準(zhǔn)庫介紹——12 time 模塊詳解
==time 模塊== ``time`` 模塊提供了一些處理日期和一天內(nèi)時(shí)間的函數(shù). 它是建立在 C 運(yùn)行時(shí)庫的簡單封裝. 給定的日期和時(shí)間可以被表示為浮點(diǎn)型(從參考時(shí)間, 通常是 1970.1.1 ...
python標(biāo)準(zhǔn)庫介紹——27 random 模塊詳解
==random 模塊== "Anyone who considers arithmetical methods of producing random digits is, of cour ...
python標(biāo)準(zhǔn)庫介紹——10 sys 模塊詳解
==sys 模塊== ``sys`` 模塊提供了許多函數(shù)和變量來處理 Python 運(yùn)行時(shí)環(huán)境的不同部分. === 處理命令行參數(shù)=== 在解釋器啟動后, ``argv`` 列表包含了傳遞給腳本的所有 ...
python標(biāo)準(zhǔn)庫介紹——33 thread 模塊詳解
?==thread 模塊== (可選) ``thread`` 模塊提為線程提供了一個(gè)低級 (low_level) 的接口, 如 [Example 3-6 #eg-3-6] 所示. 只有你在編譯解釋器時(shí) ...
python標(biāo)準(zhǔn)庫介紹——30 code 模塊詳解
==code 模塊== ``code`` 模塊提供了一些用于模擬標(biāo)準(zhǔn)交互解釋器行為的函數(shù). ``compile_command`` 與內(nèi)建 ``compile`` 函數(shù)行為相似, 但它會通過測試來保證 ...
python標(biāo)準(zhǔn)庫介紹——8 operator 模塊詳解
==operator 模塊== ``operator`` 模塊為 Python 提供了一個(gè) "功能性" 的標(biāo)準(zhǔn)操作符接口. 當(dāng)使用 ``map`` 以及 ``filter`` 一類 ...
python標(biāo)準(zhǔn)庫介紹——36 popen2 模塊詳解
==popen2 模塊== ``popen2`` 模塊允許你執(zhí)行外部命令, 并通過流來分別訪問它的 ``stdin`` 和 ``stdout`` ( 可能還有 ``stderr`` ). 在 pyth ...
python標(biāo)準(zhǔn)庫介紹——32 Queue 模塊詳解
Queue 模塊 ``Queue`` 模塊提供了一個(gè)線程安全的隊(duì)列 (queue) 實(shí)現(xiàn), 如 [Example 3-2 #eg-3-2] 所示. 你可以通過它在多個(gè)線程里安全訪問同個(gè)對象. ==== ...
python標(biāo)準(zhǔn)庫介紹——23 UserString 模塊詳解
==UserString 模塊== (2.0 新增) ``UserString`` 模塊包含兩個(gè)類, //UserString// 和 //MutableString// . 前者是對標(biāo)準(zhǔn)字符串類型的 ...
隨機(jī)推薦
上傳文件fileupload
文件上傳: 需要使用控件-fileupload 1.如何判斷是否選中文件??FileUpload.FileName - ?選中文件的文件名,如果長度不大于0,那么說明沒選中任何文件?js - f.va ...
XStream的例子
寫個(gè)小例子,方便以后復(fù)習(xí): 1 package com.demo; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 impor ...
【題解】【BT】【Leetcode】Populating Next Right Pointers in Each Node
Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *nex ...
C語言系列之printf和%12d的用法(三)
看C語言程序的時(shí)候,往往會遇到printf函數(shù)輸出,在此,我想總結(jié)一下printf的一般用法以及%12d是什么意思 printf函數(shù)的一般格式為 printf(格式控制,輸出列表): 例如: prin ...
8_python連接數(shù)據(jù)庫
如何用python操作數(shù)據(jù)庫? -- 導(dǎo)入pymysql ? ? ? ? ? ? ? ? ? ?-- import pymysql -- 創(chuàng)建連接 ? ? ? ? ? ? ? ? ? ? ? ? ?- ...
C++常見筆試題
1.實(shí)現(xiàn)字符串轉(zhuǎn)整數(shù)的函數(shù):int atoi(const char *nptr) 2.實(shí)現(xiàn)數(shù)組折半查找:int BinarySearch(int a[],int len, int key) 3.實(shí)現(xiàn)字 ...
單調(diào)棧的運(yùn)用-bzoj1012(代碼轉(zhuǎn)載-http://hzwer.com/1130.html)
Description 現(xiàn)在請求你維護(hù)一個(gè)數(shù)列,要求提供以下兩種操作: . 查詢操作.語法:Q L 功能:查詢當(dāng)前數(shù)列中末尾L個(gè)數(shù)中的最大的數(shù),并輸出這個(gè)數(shù)的值.限制:L不超過當(dāng)前數(shù)列的長度. . 插 ...
IDEA導(dǎo)出jar包后運(yùn)行報(bào)錯(cuò) 找不到或無法加載主類
開發(fā)工具:IDEA16 運(yùn)行環(huán)境:ubuntu 問題:根據(jù)網(wǎng)上的Idea導(dǎo)出jar包的方法,將我的項(xiàng)目導(dǎo)出jar包后運(yùn)行報(bào)錯(cuò):找不到或無法加載主類. ? 為了找到這個(gè)原因,我重新搭建了一個(gè)測試?yán)?在 ...
Business Unit Helper
using System; using System.Linq; using Microsoft.Xrm.Sdk; using Microsoft.Crm.Sdk.Messages; using Sy ...
總結(jié)
以上是生活随笔為你收集整理的python的threading库_python标准库介绍——31 threading 模块详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python的类程序的结构_Python
- 下一篇: python如何使用文件_Python的