博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
day40-python多进程多线程-多线程实例和锁
阅读量:6907 次
发布时间:2019-06-27

本文共 1430 字,大约阅读时间需要 4 分钟。

多线程

线程是应用程序中工作的最小单元。

多线程是现实有两种方式:

方法一:将要执行的方法作为参数传给Thread的构造方法(和多进程类似)
t = threading.Thread(target=action, args=(i,))

方法二:从Thread继承,并重写run()

所以如果重写了run,就直接调用run的函数了,如果run没有重新,就调用target函数。

实例

import threading方法一def worker(n):    print("start worker{0}".format(n))方法二class Mythread(threading.Thread):    def __init__(self,args):        super(Mythread,self).__init__()        self.args = args    def run(self):        print("start MyThread{0}".format(self.args))if __name__ == "__main__":    for i in xrange(1,6):        t1 = threading.Thread(target=worker,args=(i,))        t1.start()    t1.join()    for x in xrange(6,11):        t2 = Mythread(x)        t2.start()    t2.join()输出结果:start worker1start worker2start worker3start worker4start worker5start MyThread6start MyThread7start MyThread8start MyThread9start MyThread10

线程锁

通过threading.Lock()来创建锁,函数在执行的只有先要获得锁,左后执行完以后要释放锁:
with lock:
lock.acquire()
lock.release()

import threadingimport timedef worker(name,lock):    with lock:        print("start {0}".format(name))        time.sleep(5)        print("end {0}".format(name))if __name__ == "__main__":    lock = threading.Lock()    t1 = threading.Thread(target=worker, args=("worker1", lock))    t2 = threading.Thread(target=worker, args=("worker2", lock))    t1.start()    t2.start()    print("main end.")输出结果start worker1main end.end worker1   #中间间隔5秒start worker2end worker2

 

转载于:https://www.cnblogs.com/wxp997/p/8040114.html

你可能感兴趣的文章
从0开始--倒序输出。
查看>>
吉特仓库管理系统-.NET打印问题总结
查看>>
sqlplus 返回2 由于命令后没有加分号
查看>>
poj 2155 Matrix
查看>>
shell中(),[]和[[]]的区别
查看>>
Centos7.x下Nginx安装及SSL配置与常用命令
查看>>
98. Validate Binary Search Tree
查看>>
【Android】Retrofit 2.0 的使用
查看>>
Java程序员幽默爆笑锦集
查看>>
【勘误】第三章基本变量
查看>>
用友iuap入选2016世界互联网领先科技成果50强
查看>>
fastclick 源码注解及一些基础知识点
查看>>
CentOS Rsync服务端与Windows cwRsync客户端实现数据同步
查看>>
TAR包CLONE方式 安装11GR2 RAC数据库 (gril软件root.sh)
查看>>
热备份路由协议(HSRP)大型配置之详解
查看>>
gb2312编码文件转成utf8
查看>>
一次WinRoute后门攻防实况
查看>>
数据驱动业务决策的5个步骤
查看>>
上网个人信息如何不“裸奔” 10条信息安全建议
查看>>
JIRA的常用选项
查看>>