Python多线程—Thread和Threading

又到周四,科普Time,今天给大家讲讲Python多线程中的两个模块,Thread和Threading。

针对两个模块下文中会给出一些实例,给大家加深印象。

说到Python的多线程呢,先介绍一下一定绕不过去的坑,全局解释器锁GIL。

全局解释器锁(GIL)

同Java一样,Python也有虚拟机控制着Python代码的执行。Python作者设计Python之初,多CPU提高效率的硬件环境还没有出现,于是只考虑了主循环中一个控制线程在执行多线程的情况。

于是问题来了,怎么做控制呢?答案就是GIL~,使用全局解释锁来保证同时只有一个线程在执行。

简单的如下:

thread和threading

Python进行多线程的编程的方式有多样,比如:thread,threading。

thread模块提供了基本的线程和锁定支持,而threading模块提供了更高级别,功能更全面的线程管理。

推荐使用更高级别的threading模块,下面是一个简单的对比:

守护进程讲解(来自搜狗百科/斜眼)

守护进程是一个在后台运行并且不受任何终端控制的进程。Unix操作系统有很多典型的守护进程(其数目根据需要或20—50不等),它们在后台运行,执行不同的管理任务。

用户使守护进程独立于所有终端是因为,在守护进程从一个终端启动的情况下,这同一个终端可能被其他的用户使用。例如,用户从一个终端启动守护进程后退出,然后另外一个人也登录到这个终端。用户不希望后者在使用该终端的过程中,接收到守护进程的任何错误信息。同样,由终端键入的任何信号(例如中断信号)也不应该影响先前在该终端启动的任何守护进程的运行。虽然让服务器后台运行很容易(只要shell命令行以&结尾即可),但用户还应该做些工作,让程序本身能够自动进入后台,且不依赖于任何终端。

守护进程没有控制终端,因此当某些情况发生时,不管是一般的报告性信息,还是需由管理员处理的紧急信息,都需要以某种方式输出。Syslog 函数就是输出这些信息的标准方法,它把信息发送给 syslogd 守护进程。

多线程实践

threading实例

1:创建一个thread实例,往其传递参数。

方式2:创建Thread的Subclass,并实例化子类

thread实例

通过以上实例是不是对两个模块的使用有个大致印象了呢~

华安劝你手动敲一敲代码,加深印象。

好了,今天就到这儿呗。

下次给你们深入讲解python多线程机制~!

我是9527,华安出品,还算精品~~~咱们下次见。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180308B0DHP800?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券