深入理解Python中的多线程

lnh2017 · 2018-11-22 14:30:57 · 2293 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2018-11-22 14:30:57 的主题,其中的信息可能已经有所发展或是发生改变。

Python多线程类似于同时执行多个不同程序,但其执行过程中和进程还是有区别的,每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口,但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

Python多线程优点

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

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

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

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

Python多线程使用方法

Python中使用线程有两种方式,分别是函数或者用类来包装线程对象。

用函数来包装线程对象的方式

用函数来包装线程对象的方式是调用thread模块中的start_new_thread()函数来产生新线程,线程的结束一般依靠线程函数的自然结束,也可以在线程函数中调用thread.exit()以达到退出线程的目的。具体语法如下:

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

参数说明:

function - 线程函数;

args - 传递给线程函数的参数,他必须是个tuple类型;

kwargs - 可选参数。

用类来包装线程对象的方法

除了调用thread模块来产生新线程外,还可以采用Thread类来处理线程,Thread类提供的方法有:

run(): 用以表示线程活动的方法;

start():启动线程活动;

join([time]): 等待至线程中止。这阻塞调用线程直至线程的join() 方法被调用中止-正常退出或者抛出未处理的异常-或者是可选的超时发生;

isAlive(): 返回线程是否活动的;

getName(): 返回线程名;

setName(): 设置线程名。

除了使用以上两种方法外,还可以使用Threading模块创建线程,直接从threading.Thread继承,然后重写init方法和run方法,有兴趣的可以进一步了解具体用法!


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2293 次点击  
加入收藏 微博
1 回复  |  直到 2018-11-23 17:06:17
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传