python-11多线程
2024-09-20 23:31:17
1-多任务可以由多进程完成,也可以由一个进程内的多线程完成。
1.1多线程代码示例
import time, threading def loop():
print("thread %s is running..." % threading.current_thread().name)
n=0
while n<5:
n = n+1
print("thread %s >>> %s" % (threading.current_thread().name, n))
time.sleep(1)
print("thread %s ended." % threading.current_thread().name) print("thread %s is running..." % threading.current_thread().name)
t = threading.Thread(target=loop, name='LookpThread') #创建线程
t.start() #开始线程
t.join() #等待线程结束
print("thread %s ened." % threading.current_thread().name)
1.2 lock锁的使用
def run_thread(n):
for i in range(100000):
lock.acquire() # 先要获取锁:
try:
change_it(n) # 放心地改吧:
finally:
lock.release() # 改完了一定要释放锁:
#Python虽然不能利用多线程实现多核任务,但可以通过多进程实现多核任务。多个Python进程有各自独立的GIL锁,互不影响。
2-ThreadLocal使用, 线程之间参数传递太麻烦。 所以诞生了它
import threading local_school = threading.local() #创建一个全局对象 def process_student():
stu = local_school.student #根据运行的线程取出student对象
print("hwllo, %s (in %s)" % (stu, threading.current_thread().name)) def process_thread(name):
local_school.student = name #每个运行的线程创建的student不一样
process_student() t1 = threading.Thread(target=process_thread, args=('fengyong',), name='thread-A')
t2 = threading.Thread(target=process_thread,args=('binyan',), name='thread-B') t1.start()
t2.start()
t1.join()
t2.join()
3-分布式进程
在Thread和Process中,应当优选Process,因为Process更稳定,而且,Process可以分布到多台机器上,而Thread最多只能分布到同一台机器的多个CPU上。
最新文章
- You need to use a Theme.AppCompat theme (or descendant) with this activity
- script实现的日期表示
- 别名现象,java对象之间的相互赋值
- Java多线程编程核心技术--定时器
- 如何点击按钮后在加载外部的Js文件
- Mycat配置文件rule.xml
- 二分法 organ Saltless
- [PHP]利用XAMPP搭建本地服务器, 然后利用iOS客户端上传数据到本地服务器中(三. PHP端代码实现)
- MyEclipse 2015 如何使项目能够使用 Hibernate自动生成文件
- ASP实现计算机爱好者网站,可以直接浏览
- centos下安装jenkins
- 【iOS】Swift LAZY 修饰符和 LAZY 方法
- Ordering犀利的比较器
- Hbase balancer RSgroup shell 脚本
- Linux Framebuffer save as picture
- golang label breaks
- C#调用SQlite常见问题汇总
- Oracle 行列转换总结
- Git的深入理解与GitHub托管服务的使用
- Xshell6连接虚拟机(一)