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

  

posted @ 2019-03-21 15:45  James_Danni  阅读(360)  评论(0编辑  收藏  举报