python学习-并发编程(十四)

14.2线程的创建与启动

import threading

# 定义一个普通的action函数,该函数准备作为线程执行体
def action(max):
    for i in range(max):
        print(threading.current_thread().getName() + " " + str(i))

# 下面是主程序(也就是主线程的执行体)
for i in range(100):
    print(threading.current_thread().getName() + " " + str(i))
    if i == 20:
        # 创建并启动第一个线程
        t1 = threading.Thread(target=action, args=(100,))
        t1.start()
        # 创建并启动第二个线程
        t2 = threading.Thread(target=action, args=(100,))
        t2.start()
print(‘主线程执行完成!‘)

输出结果:
...
Thread-2 83
MainThread 99
Thread-1 81
Thread-2 84
主线程执行完成!
Thread-1 82
Thread-2 85
Thread-1 83
...

first_thread

当python程序开始运行后,程序至少会创建一个主线程,主线程的线程执行体就是程序中的主程序-没有放在任何函数中的代码。

以上程序共包含三个线程,这三个线程的执行没有先后顺序,它们以并发方式执行:Thread-1执行一段时间,然后Thread-2或MainThread获得cpu执行一段时间,接下来又换其他线程执行,这就是典型的线程并发执行-cpu以快速轮换的方式在多个线程之间切换,从而给用户一种错觉:多个线程似乎同时在执行。

简言之,多线程就是让多个函数能并发执行,让普通用户感觉到多个函数似乎同时在执行。

在默认情况下 , 主线程的名字为 MainThread , 用户 启动的 多 个线程的名 字依次为 Thread-1 、 Thread-2, Thread-3

14.3线程的生命周期

14.4控制线程

14.7线程池

原文地址:https://www.cnblogs.com/wang-mengmeng/p/11650731.html

时间: 2024-10-06 13:35:59

python学习-并发编程(十四)的相关文章

python学习笔记-(十四)进程&协程

一. 进程 1. 多进程multiprocessing multiprocessing包是Python中的多进程管理包,是一个跨平台版本的多进程模块.与threading.Thread类似,它可以利用multiprocessing.Process对象来创建一个进程.该进程可以运行在Python程序内部编写的函数.该Process对象与Thread对象的用法类似. 创建一个Process实例,可用start()方法启动. join()方法可以等待子进程结束后再继续往下运行,通常用于进程间的同步.

python学习之第十四天补充

本节内容 学员管理系统练习 Django ORM操作进阶 用户认证 Django练习小项目:学员管理系统设计开发 带着项目需求学习是最有趣和效率最高的,今天就来基于下面的需求来继续学习Django 项目需求: 1.分讲师\学员\课程顾问角色,2.学员可以属于多个班级,学员成绩按课程分别统计3.每个班级至少包含一个或多个讲师4.一个学员要有状态转化的过程 ,比如未报名前,报名后,毕业老学员5.客户要有咨询纪录, 后续的定期跟踪纪录也要保存6.每个学员的所有上课出勤情况\学习成绩都要保存7.学校可以

Python学习笔记(十四)

一.序列化与反序列化 Python 中的 pickle模块提供了一种序列化对象的方法 import pickle class Student(object): def __init__(self,name,age,school="新华") self.__name = name self.__age = age self.__school = school def get_dict(slef): return { "name":self.__name, "a

python学习之第十四天再补充

自定义template tags 中间件 CRSF 权限管理 分页 Django分页 https://docs.djangoproject.com/en/1.9/topics/pagination/ 自定义template tags https://docs.djangoproject.com/es/1.9/howto/custom-template-tags/ 权限管理 django 自带有基本的权限管理 ,但粒度和限制权限的维度都只是针对具体的表,如果我们想根据业务功能来限制权限,那就得自己

Python学习笔记(十四)安装第三方模块

摘抄:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143186362353505516c5d4e38456fb225c18cc5b54ffb000 本文章完全用来个人复习使用,侵删: 在Python中,安装第三方模块,是通过包管理工具pip完成的. 在命令提示符窗口下尝试运行pip,如果Windows提示未找到命令,可以重新运行安装程序添加pip. 注意:Mac或Lin

Python 学习笔记(十四)Python类(三)

完善类的内容 示例: 1 #! /usr/bin/env python 2 # coding =utf-8 3 4 #通常类名首字母大写 5 class Person(object): 6 7 """ 8 This is about a person #类文档 9 """ 10 11 def __init__(self,name,lang="python"):#初始化函数,类被实例化的时候,要执行 12 self.name =

python学习(二十四)开发接口

模拟一些接口,在接口没有开发成功前,可以用它来测试 用来查询数据 1.第一个接口 import flask,json #__name__,代表当前这个python文件 server=flask.Flask(__name__) #把这个python文件,当做一个服务 #ip:8000/index?uge @server.route('/index',methods=['get','post']) #可以只写一个,那就只支持那一个 def index(): res={'msg':'这是开发的第一个接

python学习第七十四天:单表查询

单表查询 创建表 创建模型 在models.py中定义类,一个类就是一张表 from django.db import models class Book(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=64) pub_data = models.DateField() price = models.DecimalField(max_digits=5, decima

python学习第五十四天:作用域对象与运用技巧

1. JS作用域 1.1 全局作用域和局部作用域 函数外面声明的就是 全局作用域 函数内是局部作用域 全局变量可以直接在函数内修改和使用 变量,使用var是声明,没有var是使用变量. 如果在函数内使用var来声明变量,在函数内会覆盖同名的全局变量 1.2 变量提升 在变量声明之前 去使用变量 会得到 undefined ,而不是报错 函数内,如果声明了跟全局变量同名的局部变量, 在声明之前使用改变量,得到undefined( 该变量已经是局部的啦) 1.3 作用域链 当一个作用域 使用某个变量