python的threading库_python标准库介绍——31 threading 模块详解
threading 模塊
(可選) ``threading`` 模塊為線程提供了一個高級接口, 如 [Example 3-1 #eg-3-1] 所示.
它源自 Java 的線程實現. 和低級的 ``thread`` 模塊相同, 只有你在編譯解釋器時打開了線程支持才可以使用它 .
你只需要繼承 //Thread// 類, 定義好 ``run`` 方法, 就可以創建一 個新的線程.
使用時首先創建該類的一個或多個實例, 然后調用 ``start`` 方法. 這樣每個實例的
``run`` 方法都會運行在它自的線程里.
====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// 對象里創建臨界區
(critical section). 如果刪除了 ``acquire`` 和 ``release`` 語句, 那么 ``Counter`` 很可能不會到達 100.
python標準庫介紹——12 time 模塊詳解
==time 模塊== ``time`` 模塊提供了一些處理日期和一天內時間的函數. 它是建立在 C 運行時庫的簡單封裝. 給定的日期和時間可以被表示為浮點型(從參考時間, 通常是 1970.1.1 ...
python標準庫介紹——27 random 模塊詳解
==random 模塊== "Anyone who considers arithmetical methods of producing random digits is, of cour ...
python標準庫介紹——10 sys 模塊詳解
==sys 模塊== ``sys`` 模塊提供了許多函數和變量來處理 Python 運行時環境的不同部分. === 處理命令行參數=== 在解釋器啟動后, ``argv`` 列表包含了傳遞給腳本的所有 ...
python標準庫介紹——33 thread 模塊詳解
?==thread 模塊== (可選) ``thread`` 模塊提為線程提供了一個低級 (low_level) 的接口, 如 [Example 3-6 #eg-3-6] 所示. 只有你在編譯解釋器時 ...
python標準庫介紹——30 code 模塊詳解
==code 模塊== ``code`` 模塊提供了一些用于模擬標準交互解釋器行為的函數. ``compile_command`` 與內建 ``compile`` 函數行為相似, 但它會通過測試來保證 ...
python標準庫介紹——8 operator 模塊詳解
==operator 模塊== ``operator`` 模塊為 Python 提供了一個 "功能性" 的標準操作符接口. 當使用 ``map`` 以及 ``filter`` 一類 ...
python標準庫介紹——36 popen2 模塊詳解
==popen2 模塊== ``popen2`` 模塊允許你執行外部命令, 并通過流來分別訪問它的 ``stdin`` 和 ``stdout`` ( 可能還有 ``stderr`` ). 在 pyth ...
python標準庫介紹——32 Queue 模塊詳解
Queue 模塊 ``Queue`` 模塊提供了一個線程安全的隊列 (queue) 實現, 如 [Example 3-2 #eg-3-2] 所示. 你可以通過它在多個線程里安全訪問同個對象. ==== ...
python標準庫介紹——23 UserString 模塊詳解
==UserString 模塊== (2.0 新增) ``UserString`` 模塊包含兩個類, //UserString// 和 //MutableString// . 前者是對標準字符串類型的 ...
隨機推薦
上傳文件fileupload
文件上傳: 需要使用控件-fileupload 1.如何判斷是否選中文件??FileUpload.FileName - ?選中文件的文件名,如果長度不大于0,那么說明沒選中任何文件?js - f.va ...
XStream的例子
寫個小例子,方便以后復習: 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語言程序的時候,往往會遇到printf函數輸出,在此,我想總結一下printf的一般用法以及%12d是什么意思 printf函數的一般格式為 printf(格式控制,輸出列表): 例如: prin ...
8_python連接數據庫
如何用python操作數據庫? -- 導入pymysql ? ? ? ? ? ? ? ? ? ?-- import pymysql -- 創建連接 ? ? ? ? ? ? ? ? ? ? ? ? ?- ...
C++常見筆試題
1.實現字符串轉整數的函數:int atoi(const char *nptr) 2.實現數組折半查找:int BinarySearch(int a[],int len, int key) 3.實現字 ...
單調棧的運用-bzoj1012(代碼轉載-http://hzwer.com/1130.html)
Description 現在請求你維護一個數列,要求提供以下兩種操作: . 查詢操作.語法:Q L 功能:查詢當前數列中末尾L個數中的最大的數,并輸出這個數的值.限制:L不超過當前數列的長度. . 插 ...
IDEA導出jar包后運行報錯 找不到或無法加載主類
開發工具:IDEA16 運行環境:ubuntu 問題:根據網上的Idea導出jar包的方法,將我的項目導出jar包后運行報錯:找不到或無法加載主類. ? 為了找到這個原因,我重新搭建了一個測試例子,在 ...
Business Unit Helper
using System; using System.Linq; using Microsoft.Xrm.Sdk; using Microsoft.Crm.Sdk.Messages; using Sy ...
總結
以上是生活随笔為你收集整理的python的threading库_python标准库介绍——31 threading 模块详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python的类程序的结构_Python
- 下一篇: python如何使用文件_Python的