Python学习笔记391

简介: Python 多线程

Python 线程同步

以下代码可以直观展示加锁和不加锁时,对数据修改情况。

加锁时

# -*-* 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参数不填时将一直阻塞直到获得锁定

       # 否则超时后将返回 False

       threadLock.acquire()

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

       # 释放锁

       threadLock.release()

   def __del__(self):

       printself.name,"线程结束!"

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 =[]

# 创建新线程

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"主进程结束!"

输出结果为:

开始线程:Thread-1

开始线程:Thread-2

[ThuNov2216:04:132018]Thread-1修改第12个值,修改后值为:1

[ThuNov2216:04:142018]Thread-1修改第11个值,修改后值为:1

[ThuNov2216:04:152018]Thread-1修改第10个值,修改后值为:1

[ThuNov2216:04:162018]Thread-1修改第9个值,修改后值为:1

[ThuNov2216:04:172018]Thread-1修改第8个值,修改后值为:1

[ThuNov2216:04:182018]Thread-1修改第7个值,修改后值为:1

[ThuNov2216:04:192018]Thread-1修改第6个值,修改后值为:1

[ThuNov2216:04:202018]Thread-1修改第5个值,修改后值为:1

[ThuNov2216:04:212018]Thread-1修改第4个值,修改后值为:1

[ThuNov2216:04:222018]Thread-1修改第3个值,修改后值为:1

[ThuNov2216:04:232018]Thread-1修改第2个值,修改后值为:1

[ThuNov2216:04:242018]Thread-1修改第1个值,修改后值为:1

[ThuNov2216:04:262018]Thread-2修改第12个值,修改后值为:2

[ThuNov2216:04:282018]Thread-2修改第11个值,修改后值为:2

[ThuNov2216:04:302018]Thread-2修改第10个值,修改后值为:2

[ThuNov2216:04:322018]Thread-2修改第9个值,修改后值为:2

[ThuNov2216:04:342018]Thread-2修改第8个值,修改后值为:2

[ThuNov2216:04:362018]Thread-2修改第7个值,修改后值为:2

[ThuNov2216:04:382018]Thread-2修改第6个值,修改后值为:2

[ThuNov2216:04:402018]Thread-2修改第5个值,修改后值为:2

[ThuNov2216:04:422018]Thread-2修改第4个值,修改后值为:2

[ThuNov2216:04:442018]Thread-2修改第3个值,修改后值为:2

[ThuNov2216:04:462018]Thread-2修改第2个值,修改后值为:2

[ThuNov2216:04:482018]Thread-2修改第1个值,修改后值为:2

主进程结束!

Thread-1线程结束!

Thread-2线程结束!

相关文章
|
网络协议 Java Linux
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
本文介绍了PyAV库,它是FFmpeg的Python绑定,提供了底层库的全部功能和控制。文章详细讲解了PyAV的安装过程,包括在Windows、Linux和ARM平台上的安装步骤,以及安装中可能遇到的错误和解决方法。此外,还解释了时间戳的概念,包括RTP、NTP、PTS和DTS,并提供了Python代码示例,展示如何获取RTSP流中的各种时间戳。最后,文章还提供了一些附录,包括Python通过NTP同步获取时间的方法和使用PyAV访问网络视频流的技巧。
3306 4
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
663 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
JSON 数据格式 Python
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
本文介绍了如何使用Python的socket模块实现客户端到服务器端的文件传输,包括客户端发送文件信息和内容,服务器端接收并保存文件的完整过程。
662 1
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
206 1
|
Ubuntu Linux Python
Ubuntu学习笔记(六):ubuntu切换Anaconda和系统自带Python
本文介绍了在Ubuntu系统中切换Anaconda和系统自带Python的方法。方法1涉及编辑~/.bashrc和/etc/profile文件,更新Anaconda的路径。方法2提供了详细的步骤指导,帮助用户在Anaconda和系统自带Python之间进行切换。
564 1
|
索引 Python
Python学习笔记编程小哥令狐~持续更新、、、(上)
Python学习笔记编程小哥令狐~持续更新、、、(上)
168 2
|
索引 Python
【免费分享编程笔记】Python学习笔记(一)
【免费分享编程笔记】Python学习笔记(一)
109 1
|
存储 Python
Python学习笔记编程小哥令狐~持续更新、、、 (下)
Python学习笔记编程小哥令狐~持续更新、、、 (下)
117 1
|
Java 编译器 Go
Python学习笔记--- day01计算机基础和环境搭建(一)
Python学习笔记--- day01计算机基础和环境搭建(一)
215 2
|
存储 Python
【免费分享编程笔记】Python学习笔记(二)
【免费分享编程笔记】Python学习笔记(二)
152 0
【免费分享编程笔记】Python学习笔记(二)

推荐镜像

更多