多线程与多进程

进程(Process)
是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。
线程(Thread)
有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。 线程是进程中的一个实体,是被系统独立调度和分派的基本单位,一个进程可以包含多个线程,但是线程不能包含多个进程。线程自己不拥有系统资源 ,在单个程序中同时运行多个线程完成不同的工作,称为多线程。
线程与进程的区别
线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文。
Tips:
LoadRunner和Jmeter性能测试工具也利用了多线程和多进程来构造多个并发用户来执行性能测试。
线程与进程图文解释
http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html

1、单线程

单线程在程序执行时,所走的程序路径按照连续顺序排下来,前面的必须处理好,后面的才会执行。

案例:一个学生先用2秒说话,接着用3秒写字,最后结束。

from time import ctime,sleep

def talk():
    print("Start talk %r" %ctime())
    sleep(2)

def write():
    print("Start Write! %r" %ctime())
    sleep(3)

if __name__=="__main__":
    talk()
    write()
    print("All end %r" %ctime())

if name==“main”: 表示如果当前模块是被直接运行的,则该语句之后代码块被运行,如果模块是被导入的,则代码块不被运行。

2、多线程

多线程(MultiThreading)是指从软件或者硬件上实现多个线程并发执行的技术。
案例:让学生同时进行说和写操作

from  time import ctime,sleep
import threading

def talk(content,loop):
    for i in range(loop):
        print("Start Talk %s %s" %(content,ctime()))
        sleep(3)

def write(content,loop):
    for i in range(loop):
        print("Start Write %s %s" %(content,ctime()))
        sleep(5)

threads=[]
t1=threading.Thread(target=talk,args=('Speak: Hello,51zxw',2))
threads.append(t1)

t2=threading.Thread(target=write,args=('Write: Life is Short You need Python!',2))
threads.append(t2)

if __name__=='__main__':
    for t in threads:
        t.start()
    for t in threads:
        t.join()
    print("All the End %r" %ctime())

3、多进程

与多线程相比,多进程就是import multiprocessing 然后替换相应的方法multiprocessing.Process()

from time import sleep,ctime
import multiprocessing

def talk(content,loop):
    for i in range(loop):
        print("Talk: %s  %s" %(content,ctime()))
        sleep(2)

def write(content,loop):
    for i in range(loop):
        print("Write: %s  %s"%(content,ctime()))
        sleep(3)

process=[]
p1=multiprocessing.Process(target=talk,args=('hello 51zxw',2))
process.append(p1)

p2=multiprocessing.Process(target=write,args=('Python',2))
process.append(p2)

if __name__=='__main__':
    for p in process:
        p.start()
    for p in process:
        p.join()
    print("All process is Run %s" %ctime())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值