python_并发编程——多线程

1.多线程并发

from threading import Thread
import time

def func(n):
    time.sleep(1)
    print(n)

for i in range(10):
    t = Thread(target=func,args=(i,))   #将函数注册进子线程,并传递参数
    t.start()   #启动子线程

结果:

 2.另外一种启动多线程的方法

from threading import Thread
import time

class MyTread(Thread):
    def __init__(self,arg):     #接收参数
        super().__init__()
        self.arg = arg

    def run(self):  #子线程要执行的内容
        time.sleep(1)
        print(self.arg)

for i in range(10):
    t = MyTread(i)  #实例化子线程+传递参数
    t.start()   #启动子线程

结果:

 3.查看多线程是否都在同一个进程里面

from threading import Thread
import time
import os

class MyTread(Thread):
    def __init__(self,arg):     #接收参数
        super().__init__()
        self.arg = arg

    def run(self):  #子线程要执行的内容
        time.sleep(1)
        print(self.arg,os.getpid())

for i in range(10):
    t = MyTread(i)  #实例化子线程+传递参数
    t.start()   #启动子线程
print(‘主线程:‘,os.getpid())

结果: 相同的进程编号,说明所有的线程都在同一个进程里面。

4.线程之间数据共享

from threading import Thread
import time

ggg = 100

def func(n):
    time.sleep(1)
    global ggg
    ggg = 0
    print(‘子线程:‘,n)

t_list = []
for i in range(10):
    t = Thread(target=func,args=(i,))
    t.start()
    t_list.append(t)
for i in t_list:
    i.join()
print(‘主线程:‘,ggg)

结果: 全局变量ggg本来是100,在子线程中被改成了0。

原文地址:https://www.cnblogs.com/wangdianchao/p/12109579.html

时间: 2024-10-13 18:34:32

python_并发编程——多线程的相关文章

python并发编程&多线程(一)

本篇理论居多,实际操作见:  python并发编程&多线程(二) 一 什么是线程 在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程 线程顾名思义,就是一条流水线工作的过程,一条流水线必须属于一个车间,一个车间的工作过程是一个进程 车间负责把资源整合到一起,是一个资源单位,而一个车间内至少有一个流水线 流水线的工作需要电源,电源就相当于cpu 所以,进程只是用来把资源集中到一起(进程只是一个资源单位,或者说资源集合),而线程才是cpu上的执行单位. 多线程(即多个控制线程)的概念

python并发编程&多线程(二)

前导理论知识见:python并发编程&多线程(一) 一 threading模块介绍 multiprocess模块的完全模仿了threading模块的接口,二者在使用层面,有很大的相似性 官网链接:https://docs.python.org/3/library/threading.html?highlight=threading#(装B模式加载中…………) 二 开启线程的两种方式  方式一  方式二 三 在一个进程下开启多个线程与在一个进程下开启多个子进程的区别  1 谁的开启速度快  2 瞅

python并发编程--多线程2

并发编程--多线程2 实战部分: threading模块介绍 开启线程的两种方式 在一个进程下开启多个线程与在一个进程下开启多个子进程的区别 练习 线程相关的其他方法 守护线程 python GIL(Global Interpreter Lock) 同步锁 死锁现象与递归锁 信号量Semaphore Evect 条件Condition 定时器 线程queue python标准模块-concurrent.futures 一.threading模块介绍 说明:threading用于提供线程相关的操作

4.并发编程多线程

并发编程之多线程(理论) 一 threading模块介绍 multiprocess模块的完全模仿了threading模块的接口,二者在使用层面,有很大的相似性,因而不再详细介绍 官网链接:https://docs.python.org/3/library/threading.html?highlight=threading# 二 开启线程的两种方式 #方式一 from threading import Thread import time def sayhi(name): time.sleep(

并发编程——多线程

本节导读: 什么是线程 线程与进程的区别 开启线程的两种方法 多线程与多进程的区别 thread对象的其他属性 守护线程 gil全局解释器锁 死锁现象与递归锁 信号量,event,定时器 线程queue 进程池与线程池 一 什么是线程 线程顾名思义,就是一条流水线工作的过程(流水线的工作需要电源,电源就相当于cpu),而一条流水线必须属于一个车间,一个车间的工作过程是一个进程,车间负责把资源整合到一起,是一个资源单位,而一个车间内至少有一条流水线. 所以,进程只是用来把资源集中到一起(进程只是一

python 并发编程 多线程 GIL全局解释器锁基本概念

首先需要明确的一点是GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念. 就好比C++是一套语言(语法)标准,但是可以用不同的编译器来编译成可执行代码. >有名的编译器例如GCC,INTEL C++,Visual C++等.Python也一样,同样一段代码可以通过CPython,PyPy,Psyco等不同的Python执行环境来执行. 像其中的JPython就没有GIL.然而因为CPython是大部分环境下默认的Python执行环境.所以在很多人的概

并发编程-多线程

一.什么是线程 一条流水线的工作流程(程序中负责执行的东西叫做线程,或者叫进程内部的执行序列),操作系统能够运算调度的最小单位. 进程是资源单位,线程是执行单位 二.线程和进程的区别 1.开启进程的开销非常大,比开启线程的开销大很多 2.开启进程的速度慢,开启线程的速度快 3.进程之间通过队列等方式实现通信,线程可以共享进程中的数据 1.线程是程序执行的最小单位,进程是操作系统分配资源的最小单位 2.一个标准的线程由线程id,当前指令指针.寄存器和堆栈组成 三.线程的应用 一个文本编辑器: 1.

并发编程——多线程(4)

1.线程理论 线程是CPU的执行单位 多线程(即多个控制线程)的概念是,在一个进程中存在多个线程,多个线程共享该进程的地址空间,相当于一个车间内又多条流水线,都共用一个车间的资源.例如,北京地铁与上海地铁是不同的进程,而北京地铁里的13号线是一个线程,北京地铁所有的线路共享北京地铁所有的资源,比如所有的乘客可以被所有线路拉. 2.线程与进程的区别 同一个进程内的多个线程共享该进程内的地址资源 创建线程的开销要远小于创建进程的开销(创建一个进程,就是创建一个车间,涉及到申请空间,而且在该空间内建至

python 并发编程 多线程 守护线程

做完工作这个进程就应该被销毁 单线程情况: 一个进程 ,默认有一个主线程 ,这个主线程执行完代码后 ,就应该自动销毁.然后进程也销毁. 多线程情况: 主线程代表进程结束 一个进程可以开多个线程,默认开启进程 ,首先开一个主线程 ,然后开子线程 ,主线程代码执行完毕后 ,也要等所有子线程 ,执行完毕后 ,再销毁 ,然后到进程销毁. 守护进程 要等主进程挂了后 守护进程才挂 1.对主进程来说,运行完毕指的是主进程代码运行完毕 2.对主线程来说,运行完毕指的是主线程所在的进程内所有非守护线程统统运行完