python 实现多线程编程

什么是进程?

进程是二进制可执行文件的数据,他们只有被调到内存中,被操作系统调用的时候才开始他们的生命周期,进程是程序的每一次执行,进程有单独的内存空间、数据栈等,所以只能使用进程间通信(IPC),而不能直接共享信息。

什么是线程?

线程又称轻量级进程,所有线程运行在同一进程中,共享相同的运行环境。一个进程中各线程的数据是共享的。
在python中使用thread模块实现多读线程操作。
倒入thread模块import thread
如果没有使用线程,系统执行任务是顺序的,一个执行完后才会去执行另一个,我们通过sleep函数验证cpu等待任务过程。
示例代码如下:
`` #!/usr/bin/env python
from time import sleep, ctime

def loop0():
print 'start loop0 at:', ctime()
sleep(4)
print 'loop0 done at:', ctime()

def loop1():
print 'start loop1 at:',ctime()
sleep(2)
print 'loop1 done at:', ctime()

def main():
print 'string at :', ctime()
loop0()
loop1()
print 'all done at:', ctime()

if name == 'main':
main()
``
运行结果如图:

image.png

python的threading模块

python提供了几个线程模块,包括thread、threading、queue等。thread和threading允许程序员创建和管理线程,thread提供基本线程和锁支持,threading提供更高级的线程管理。queue允许用户创建一个可以用于多个线程之间个共享数据的数据结构。
使用thread创建线程示例代码如下:
``

!/usr/bin/env python

import thread
from time import ctime, sleep

def loop0():
print 'start loop 0 at:', ctime()
sleep(4)
print 'loop 0 done at:', ctime()

def loop1():
print 'start loop 1 at:', ctime()
sleep(2)
print 'loop 1 done at:', ctime()

def main():
print 'starting at:', ctime()
thread.start_new_thread(loop0,())
thread.start_new_thread(loop1,())
sleep(6)
print 'all done at:', ctime()

if name == 'main':
main()
``
运行结果如图:

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 线程 引言&动机 考虑一下这个场景,我们有10000条数据需要处理,处理每条数据需要花费1秒,但读取数据只需要0....
    不浪漫的浪漫_ea03阅读 2,880评论 0 0
  • 引言&动机 考虑一下这个场景,我们有10000条数据需要处理,处理每条数据需要花费1秒,但读取数据只需要0.1秒,...
    chen_000阅读 3,480评论 0 0
  • 概述 多线程给我们带来的好处是可以并发的执行多个任务,特别是对于I/O密集型的业务,使用多线程,可以带来成倍的性能...
    SimonChen阅读 13,153评论 0 5
  • 我们前面提到了进程是由若干线程组成的,一个进程至少有一个线程。多线程优点: 在一个进程中的多线程和主线程分享相同的...
    第八共同体阅读 3,468评论 0 0
  • 多线程模块 threading 创建多线程的两种方式:import threadingimport time 创建...
    钱塘阅读 2,953评论 0 3