日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 线程同步_Python 线程同步

發(fā)布時間:2023/12/19 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 线程同步_Python 线程同步 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

zhoushixiong

Python 線程同步

以下代碼可以直觀展示加鎖和不加鎖時,對數(shù)據(jù)修改情況。

加鎖時

# -*-* encoding:UTF-8 -*-

# author : shoushixiong

# date : 2018/11/22

import threading

import time

list = [0,0,0,0,0,0,0,0,0,0,0,0]

class myThread(threading.Thread):

def __init__(self,threadId,name,counter):

threading.Thread.__init__(self)

self.threadId = threadId

self.name = name

self.counter = counter

def run(self):

print "開始線程:",self.name

# 獲得鎖,成功獲得鎖定后返回 True

# 可選的timeout參數(shù)不填時將一直阻塞直到獲得鎖定

# 否則超時后將返回 False

threadLock.acquire()

print_time(self.name,self.counter,list.__len__())

# 釋放鎖

threadLock.release()

def __del__(self):

print self.name,"線程結(jié)束!"

def print_time(threadName,delay,counter):

while counter:

time.sleep(delay)

list[counter-1] += 1

print "[%s] %s 修改第 %d 個值,修改后值為:%d" % (time.ctime(time.time()),threadName,counter,list[counter-1])

counter -= 1

threadLock = threading.Lock()

threads = []

# 創(chuàng)建新線程

thread1 = myThread(1,"Thread-1",1)

thread2 = myThread(2,"Thread-2",2)

# 開啟新線程

thread1.start()

thread2.start()

# 添加線程到線程列表

threads.append(thread1)

threads.append(thread2)

# 等待所有線程完成

for t in threads:

t.join()

print "主進程結(jié)束!"

輸出結(jié)果為:

開始線程: Thread-1

開始線程: Thread-2

[Thu Nov 22 16:04:13 2018] Thread-1 修改第 12 個值,修改后值為:1

[Thu Nov 22 16:04:14 2018] Thread-1 修改第 11 個值,修改后值為:1

[Thu Nov 22 16:04:15 2018] Thread-1 修改第 10 個值,修改后值為:1

[Thu Nov 22 16:04:16 2018] Thread-1 修改第 9 個值,修改后值為:1

[Thu Nov 22 16:04:17 2018] Thread-1 修改第 8 個值,修改后值為:1

[Thu Nov 22 16:04:18 2018] Thread-1 修改第 7 個值,修改后值為:1

[Thu Nov 22 16:04:19 2018] Thread-1 修改第 6 個值,修改后值為:1

[Thu Nov 22 16:04:20 2018] Thread-1 修改第 5 個值,修改后值為:1

[Thu Nov 22 16:04:21 2018] Thread-1 修改第 4 個值,修改后值為:1

[Thu Nov 22 16:04:22 2018] Thread-1 修改第 3 個值,修改后值為:1

[Thu Nov 22 16:04:23 2018] Thread-1 修改第 2 個值,修改后值為:1

[Thu Nov 22 16:04:24 2018] Thread-1 修改第 1 個值,修改后值為:1

[Thu Nov 22 16:04:26 2018] Thread-2 修改第 12 個值,修改后值為:2

[Thu Nov 22 16:04:28 2018] Thread-2 修改第 11 個值,修改后值為:2

[Thu Nov 22 16:04:30 2018] Thread-2 修改第 10 個值,修改后值為:2

[Thu Nov 22 16:04:32 2018] Thread-2 修改第 9 個值,修改后值為:2

[Thu Nov 22 16:04:34 2018] Thread-2 修改第 8 個值,修改后值為:2

[Thu Nov 22 16:04:36 2018] Thread-2 修改第 7 個值,修改后值為:2

[Thu Nov 22 16:04:38 2018] Thread-2 修改第 6 個值,修改后值為:2

[Thu Nov 22 16:04:40 2018] Thread-2 修改第 5 個值,修改后值為:2

[Thu Nov 22 16:04:42 2018] Thread-2 修改第 4 個值,修改后值為:2

[Thu Nov 22 16:04:44 2018] Thread-2 修改第 3 個值,修改后值為:2

[Thu Nov 22 16:04:46 2018] Thread-2 修改第 2 個值,修改后值為:2

[Thu Nov 22 16:04:48 2018] Thread-2 修改第 1 個值,修改后值為:2

主進程結(jié)束!

Thread-1 線程結(jié)束!

Thread-2 線程結(jié)束!

不加鎖時同樣是上面實例的代碼,注釋以下兩行代碼:

threadLock.acquire()

threadLock.release()

輸出結(jié)果為:

開始線程: Thread-1

開始線程: Thread-2

[Thu Nov 22 16:09:20 2018] Thread-1 修改第 12 個值,修改后值為:1

[Thu Nov 22 16:09:21 2018] Thread-2 修改第 12 個值,修改后值為:2

[Thu Nov 22 16:09:21 2018] Thread-1 修改第 11 個值,修改后值為:1

[Thu Nov 22 16:09:22 2018] Thread-1 修改第 10 個值,修改后值為:1

[Thu Nov 22 16:09:23 2018] Thread-1 修改第 9 個值,修改后值為:1

[Thu Nov 22 16:09:23 2018] Thread-2 修改第 11 個值,修改后值為:2

[Thu Nov 22 16:09:24 2018] Thread-1 修改第 8 個值,修改后值為:1

[Thu Nov 22 16:09:25 2018] Thread-2 修改第 10 個值,修改后值為:2

[Thu Nov 22 16:09:25 2018] Thread-1 修改第 7 個值,修改后值為:1

[Thu Nov 22 16:09:26 2018] Thread-1 修改第 6 個值,修改后值為:1

[Thu Nov 22 16:09:27 2018] Thread-2 修改第 9 個值,修改后值為:2

[Thu Nov 22 16:09:27 2018] Thread-1 修改第 5 個值,修改后值為:1

[Thu Nov 22 16:09:28 2018] Thread-1 修改第 4 個值,修改后值為:1

[Thu Nov 22 16:09:29 2018] Thread-2 修改第 8 個值,修改后值為:2

[Thu Nov 22 16:09:29 2018] Thread-1 修改第 3 個值,修改后值為:1

[Thu Nov 22 16:09:30 2018] Thread-1 修改第 2 個值,修改后值為:1

[Thu Nov 22 16:09:31 2018] Thread-2 修改第 7 個值,修改后值為:2

[Thu Nov 22 16:09:31 2018] Thread-1 修改第 1 個值,修改后值為:1

[Thu Nov 22 16:09:33 2018] Thread-2 修改第 6 個值,修改后值為:2

[Thu Nov 22 16:09:35 2018] Thread-2 修改第 5 個值,修改后值為:2

[Thu Nov 22 16:09:37 2018] Thread-2 修改第 4 個值,修改后值為:2

[Thu Nov 22 16:09:39 2018] Thread-2 修改第 3 個值,修改后值為:2

[Thu Nov 22 16:09:41 2018] Thread-2 修改第 2 個值,修改后值為:2

[Thu Nov 22 16:09:43 2018] Thread-2 修改第 1 個值,修改后值為:2

主進程結(jié)束!

Thread-1 線程結(jié)束!

Thread-2 線程結(jié)束!

總結(jié)

以上是生活随笔為你收集整理的python 线程同步_Python 线程同步的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。