美文网首页
python多线程

python多线程

作者: 晴天下冰雹 | 来源:发表于2019-03-09 14:34 被阅读0次

    线程:

    线程是操作系统能够进行运算调度的最小单位。线程被包含在进程中,是进程中实际处理单位。一条线程就是一堆指令集合。
    一条线程是指进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

    进程:

    进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。

    区别:

    进程(process)是一块包含了某些资源的内存区域。操作系统利用进程把它的工作划分为一些功能单元。

    进程中所包含的一个或多个执行单元称为线程(thread)。进程还拥有一个私有的虚拟地址空间,该空间仅能被它所包含的线程访问。

    线程只能归属于一个进程并且它只能访问该进程所拥有的资源。当操作系统创建一个进程后,该进程会自动申请一个名为主线程或首要线程的线程。

    处理IO密集型任务或函数用线程;

    处理计算密集型任务或函数用进程。

    创建线程

    导入模块threading,通过threading.Thread()创建线程。其中target接收的是要执行的函数名字,args接收传入函数的参数,以元组()的形式表示。

    启动线程

    通过线程对象j.start()启动线程。

    j.join()

    在子线程执行完成之前,这个子线程的父线程将一直被阻塞。就是说,当调用join()的子进程没有结束之前,主进程不会往下执行。对其它子进程没有影响。

    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(3)
    
    threads=[]
    t1=threading.Thread(target=talk,args=('hello,my friends',2))
    threads.append(t1)
    t2=threading.Thread(target=write,args=('nice to see you',2))
    threads.append(t2)
    
    if __name__=='__main__':
        for j in threads:
            j.start()
        for j in threads:
            j.join()
        print("all the end %r" %ctime())
    

    相关文章

      网友评论

          本文标题:python多线程

          本文链接:https://www.haomeiwen.com/subject/ogmspqtx.html