Python多线程

作者: 獨荹儛臨 | 来源:发表于2018-01-26 17:01 被阅读29次
072b25e7b2ca042b37850a1832615d6d.gif
  • Demo1
import threading
import time

def say():
    time.sleep(2)
    print("我是子线程",time.strftime('%Y-%m-%d %H:%M:%S'))
if __name__ == "__main__":
    for i in range(3):
        t = threading.Thread(target=say)
        t.start()
    print("我是主线程",time.strftime('%Y-%m-%d %H:%M:%S'))
日志:
我是主线程 2018-01-26 16:39:18
我是子线程 2018-01-26 16:39:20
我是子线程 2018-01-26 16:39:20
我是子线程 2018-01-26 16:39:20
Process finished with exit code 0
  • Demo2 :子线程互不干扰 Join()堵塞主线程
import threading
from time import sleep, ctime
def sign():
    for i in range(3):
        print('dosomething1...%d' % i)
        sleep(1)
    print('sign end')

def dance():
    for i in range(3):
        print('dosomething2...%d' % i)
        sleep(1)
    print('dance end')

if __name__ == '__main__':
    print('main thread startTime---:%s' % ctime())

    t1 = threading.Thread(target=sign) 
    # t1 = threading.Thread(target=sign())  
    # 这里加了sign() 就不是分线程了 坑!
    t2 = threading.Thread(target=dance)
    t1.start()
    t2.start()
    #t1.join()
    #t2.join()  这里加上Join之后会堵塞主线程
    print('main thread endTime---:%s' % ctime())

日志:未加上Join
main thread startTime---:Fri Jan 26 16:56:11 2018
dosomething1...0
dosomething2...0
main thread endTime---:Fri Jan 26 16:56:11 2018
dosomething2...1
dosomething1...1
dosomething1...2
dosomething2...2
dance end
sign end
日志:加上Join
main thread startTime---:Fri Jan 26 16:59:53 2018
dosomething1...0
dosomething2...0
dosomething1...1
dosomething2...1
dosomething1...2
dosomething2...2
sign end
dance end
main thread endTime---:Fri Jan 26 16:59:56 2018
  • threading 的一些方法
print(threading.current_thread()) # 输出当前线程
count = len(threading.enumerate()) # 输出当前线程总数
print('当前运行线程数:%d' % count)

自定义线程

需要继承threading.Thread,同时重写run方法

class MyThread(threading.Thread):

    def run(self):
        for i in range(3):
            sleep(1)
            message = 'I`m'+self.name +'@'+str(i)
            print(message)
def main():
    for i in range(3):
        t = MyThread()
        t.start()

if __name__ == '__main__':
    main()

有兴趣学习的可以加群一起来探讨: 里面也有一些开发相关的PDF文档

群号:727323882

相关文章

  • GIL

    谈谈python的GIL、多线程、多进程 最近在看 Python 的多线程,经常我们会听到老手说:“python下...

  • Python多线程编程——多线程编程中的加锁机制

    如果大家对Python中的多线程编程不是很了解,推荐大家阅读之前的两篇文章:Python多线程编程——多线程基础介...

  • 5-线程(补充)

    Python多线程原理与实战 目的: (1)了解python线程执行原理 (2)掌握多线程编程与线程同步 (3)了...

  • Python_提高

    GIL全局解释器锁 描述Python GIL的概念, 以及它对python多线程的影响?编写⼀个 多线程抓取⽹⻚的...

  • Python程序员都知道的入门知识の八

    目录【Python程序员都知道的入门知识】 1. 多线程threading、Queue Python的多线程由th...

  • Python多线程实现生产者消费者

    1. Python多线程介绍 Python提供了两个有关多线程的标准库,thread和threading。thre...

  • 多线程

    Python多线程原理与实战 目的: (1)了解python线程执行原理 (2)掌握多线程编程与线程同步 (3)了...

  • Python多线程(上)

    前言 说起Python的多线程,很多人都嗤之以鼻,说Python的多线程是假的多线程,没有用,或者说不好用,那本次...

  • Python 3中的多线程

    Python 3的多线程 Python 3的多线程模块threading在旧版_thread模块基础上进行了更高层...

  • Python 多线程抓取图片效率实验

    Python 多线程抓取图片效率实验 实验目的: 是学习python 多线程的工作原理,及通过抓取400张图片这种...

网友评论

    本文标题:Python多线程

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