美文网首页
python多线程

python多线程

作者: Dxes | 来源:发表于2019-11-30 17:16 被阅读0次

一个进程中默认有且只有一个线程,这个线程叫主线程,默认情况所有的代码都在主线程中执行进程中主线程以外的线程叫子线程
1.怎么让让进程拥有子线程
在进程中创建threading模块中的Thread类或Thread类的子对象。
2.程序(进程)结束
只有进程中的线程都结束了进程才会结束
线程怎么结束:线程中任务执行完成,线程才会被销毁

from datetime import datetime
import time
from threading import *

def download(film_name: str):
    print('%s开始下载:%s' % (film_name, datetime.now()))
    for _ in range(5):
        time.sleep(1)
        # 不断下载数据
        if flag:
            return
    print('%s下载结束: %s' % (film_name, datetime.now()))
# download('暮光之城')
# download('两只老虎')
# download('海上钢琴师')

# 1.创建线程对象 - 子线程

线程对象 = Thread(target=函数,args= 元组)
说明:target - 函数,需要在子线程中执行的任务(会在子线程中调用)
args - target对应的函数在调用的时候传的参数

t1 = Thread(target=download, args=('暮光之城',))

t2 = Thread(target=download, args=('两只老虎',))
t3 = Thread(target=download, args=('海上钢琴师',))

2.让子线程执行子线程中的任务
线程对象.start() -在子线程中调用target对用的函数,并且将args中的元素作为参数。
t1.start()
删除线程的引用不会让线程销毁
t2.start()
t3.start(0
获取当前运行的线程数量
activ_count()
获取当前正在运行的所有的线程对象

for x in enumerate():
      print(x)

from threading import *
from datetime import datetime
import time


class DownThread(Thread):

    def __init__(self, film_name):
        super().__init__()
        self.film_name = film_name

    # 这个run方法是会在子线程中自动调用的方法,要求除了self以外不能有其它参数
    def run(self) -> None:
        print('%s开始下载:%s' % (self.film_name, datetime.now()))
        time.sleep(5)
        print('%s下载完成:%s' % (self.film_name, datetime.now()))


t1 = DownThread('卧虎藏龙')
t2 = DownThread('让子弹飞')
t3 = DownThread('五十度灰')

# 在子线程中执行下载操作
t1.start()
t2.start()
t3.start()
# 正在主线程中执行下载操作
# t1.run()
# t2.run()
# t3.run()
from threading import *
from datetime import datetime
import time
from random import randint



# 1.join
"""
线程对象.join()
其他代码

这儿的其他代码会在线程对象中的任务执行完成后才执行
"""
def download(film_name: str):
    print('%s开始下载:%s' % (film_name, datetime.now()))
    time.sleep(randint(3, 7))
    print('%s下载结束:%s' % (film_name, datetime.now()))


t1 = Thread(target=download, args=('暮光之城',))
t2 = Thread(target=download, args=('两只老虎',))
t3 = Thread(target=download, args=('百团大战',))

# 需求一:所有电影都下载之后打印’所有电影下载完成‘

# t1.start()
# t2.start()a
# t3.start()
#
# t1.join()
# t2.join()
# t3.join()
# print('所有电影下载完成')

# 需求二:要求暮光之城和两只老虎下载完成(同时下载)后才下载海上钢琴师
t1.start()
t2.start()

t1.join()
t2.join()
print('======')
t3.start()

相关文章

  • 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/acwowctx.html