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上。

最新文章

  1. You need to use a Theme.AppCompat theme (or descendant) with this activity
  2. script实现的日期表示
  3. 别名现象,java对象之间的相互赋值
  4. Java多线程编程核心技术--定时器
  5. 如何点击按钮后在加载外部的Js文件
  6. Mycat配置文件rule.xml
  7. 二分法 organ Saltless
  8. [PHP]利用XAMPP搭建本地服务器, 然后利用iOS客户端上传数据到本地服务器中(三. PHP端代码实现)
  9. MyEclipse 2015 如何使项目能够使用 Hibernate自动生成文件
  10. ASP实现计算机爱好者网站,可以直接浏览
  11. centos下安装jenkins
  12. 【iOS】Swift LAZY 修饰符和 LAZY 方法
  13. Ordering犀利的比较器
  14. Hbase balancer RSgroup shell 脚本
  15. Linux Framebuffer save as picture
  16. golang label breaks
  17. C#调用SQlite常见问题汇总
  18. Oracle 行列转换总结
  19. Git的深入理解与GitHub托管服务的使用
  20. Xshell6连接虚拟机(一)

热门文章

  1. MarkDown 编辑器学习
  2. Swift中as as! as?的区别
  3. Shader学习笔记整理
  4. 仿真DDR3 Controller IP
  5. 【Unity3D学习笔记】解决放大后场景消失不显示问题
  6. POJO详解
  7. seleniumCSS用法
  8. MyBatisUtil类
  9. 如何用C# 动态创建Access数据库和表?
  10. mysql索引长度