Python多线程thread、threading(一)

Python多线程(一)

Python多线程,类似于同时执行多个不同程序,多线程运行的有点:

1、使用线程可以把占据长时间的程序中的任务放到后台去处理

2、用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度

3、程序的运行速度可能加快

4、在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下我们可以释放一些珍贵的资源如内存占用等

西城在执行过程中与进程还是有区别的。每个独立的进程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依赖在应用程序中,由应用程序提供多个线程执行控制。

每个线程都有他自己的一组CPU寄存器,称为线程的上下文,该上下文反映了线程上次运营该线程的CPU寄存器的状态。

指令指针和堆栈指针寄存器是线程上下文中两个最重要的寄存器,线程总是在进程得到上下文中运行的,这些地址都用于标志有线程的进程地址空间中的内存。

1、线程可以被抢占(中断)

2、在其他线程正在运行时,线程可以暂时搁置(也成为睡眠)--这就是线程的退让

Python的线程

Python中使用线程的方式有两种:

1、函数或者用类来包装线程对象

2、函数式:调用thread模块中的start_new_thread()函数来产生新线程,语法如下:

thread.start_new_thread ( function, args[, kwargs] )

#function为需要执行多线程的函数

#args[, kwargs]为元组,被执行函数function的入参

#线程的结束一般依靠线程函数的自然结束;也可以在线程函数中调用thread.exit(),他抛出SystemExit exception,达到退出线程的目的。

#!/usr/bin/python
# -*- coding: UTF-8 -*- import thread
import time # 为线程定义一个函数
def print_time( threadName, delay):
count = 0
while count < 5:
time.sleep(delay)
count += 1
print "%s: %s" % ( threadName, time.ctime(time.time()) ) # 创建两个线程
try:
thread.start_new_thread( print_time, ("Thread-1", 2, ) )
thread.start_new_thread( print_time, ("Thread-2", 4, ) )
except:
print "Error: unable to start thread" while 1:
pass

  

上一篇:【SpringBoot MQ 系列】RabbitMq 核心知识点小结


下一篇:Python变量访问权限控制