python学习—Day43—多线程

来源:互联网 发布:asp.net程序员 编辑:程序博客网 时间:2024/06/06 10:04

多线程:

python中提供了threading模块来对多线程的操作。

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

多线程实现有两种方式:

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

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


#@File :duoxiancheng_eg.pyimport threadingdef 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 worker1
start worker2
start worker3
start worker4
start worker5
start Mythread6
start Mythread7
start Mythread8
start Mythread9
start Mythread10


多线程锁:

#@File :duoxiancheng_lock.pyimport 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 worker1
main end
end worker1
start worker2
end worker2


与多进程类似。

原创粉丝点击