开启线程的两种方式,

‘‘‘目录1,开启线程的两种方式*****2,线程和进程的区别*****3,线程对象的其他方法和属性4,守护线程5,互斥锁6,死锁现象与递过锁7,信号量‘‘‘#1 开启线程的两种方式import timefrom threading import Thread

def dask(name):    print(‘%s is running ‘%name)    time.sleep(1)    print(‘%s is done‘%name)

t=Thread(target=dask,args=(‘egon‘,))t.start()print(‘主‘)

# 第二种class Mythread(Thread):    def __init__(self,name):        super(Mythread, self).__init__()        self.name=name

def run(self):        print("%s is running "%self.name)

print(‘%s is done‘%self.name)

t=Mythread(‘alex‘)t.start()print(‘主‘)

# --------------------进程VS线程VS区别--------------------#1,线程的开启速度快,线程执行完代码不再存活# 主线程执行完毕等所有非守护线程执行完毕才会死亡,因为主进程要回操作系统收资源,# 如果子线程还没结束就进行回收,那么子线程就找不到数据

from  threading import Threadfrom multiprocessing import  Processimport time

def task(name):    print(‘%s is running ‘%name)    time.sleep(2)    print(‘%s is done ‘%name)

if __name__ == ‘__main__‘:    t=Thread(target=task,args=(‘子线程‘,))    t.start()    print(‘主 ‘)

#2.同一进程下的多个线程共享该进程内的数据,子线程可以修改该进程内的数据被其他子线程调用#子进程修改全局变量修改的只是自己的,子进程无法修改父进程的资源,因为空间都是物理上的隔离from threading import Threadimport timex=100def dask():    global x    x=88    print(x)    time.sleep(1)

#开启多个子进程多个子进程的PID 都是不一样的,开启多个子线程,多个子线程和主线程的Pid都是一致的

t=Thread(target=dask)t.start()t.join() #会等子线程运行完毕才往下走print(‘主‘,x)

#查看pidfrom  threading import Threadimport os,time

def task():    print(os.getpid())

t=Thread(target=task)t.start()print(‘主‘,os.getpid())

# ======================线程对象的其他方法和属性==================##主进程等子进程是因为主进程要给子进程收尸#进程必须等待其内部所有线程都隐形完毕才结束from threading import current_thread,active_count,enumerateimport time

def task(name):    print(‘%s is running ‘%name)    time.sleep(2)    print(‘%s is done‘%name)

t=Thread(target=task,args=(‘子线程‘,))t.start()print(‘主‘)

# ------------------------------------------def task():    print(‘%s is running ‘%current_thread().name)    time.sleep(2)    print(‘%s is done‘%current_thread().name)#查看当前进程的名字

print(‘走到这了‘)t=Thread(target=task,name=‘xxx‘)t.start()t.join()print(t.is_alive())#判断进/线程是否存活print(t.getName())#拿到线程对象的名字xxxprint(enumerate())

current_thread().setName(‘主线程‘)print(‘主‘,current_thread().name)#拿到当前线程的名字

# Thread实例对象的方法# isAlive(): 返回线程是否活动的。# getName(): 返回线程名。# setName(): 设置线程名。

# threading模块提供的一些方法:# threading.currentThread(): 返回当前的线程变量。# threading.enumerate(): 返回一个包含正在运行的线程的list。正在运行指线程启动后、结束前,不包括启动前和终止后的线程。# threading.activeCount(): 返回正在运行的线程数量,与len(threading.enumerate())有相同的结果。

原文地址:https://www.cnblogs.com/lijieshi/p/9306826.html

时间: 2025-01-02 06:10:33

开启线程的两种方式,的相关文章

Java开启线程的两种方式

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.ios培训..Net培训</a>.期待与您交流!------ Java开启线程的两种方式: 方式一:成为线程(Thread)的儿子,即继承Thread类简单代码如下:class Student extends Thread{Student(String name){super(name);}public

python并发编程:多线程-开启线程的两种方式

一 threading模块介绍 multiprocess模块完全模仿了threading模块的接口,二者在使用层面,有很大的相似性 二 开启线程的两种方式 方式一 from threading import Thread import time def sayhi(name): time.sleep(2) print("%s say hello" % name) if __name__ == '__main__': t = Thread(target=sayhi, args=('mik

7 并发编程-(线程)-开启线程的两种方式

thread/英 /θred/ 美 /θr?d/  线程 1.threading模块介绍 multiprocess模块的完全模仿了threading模块的接口,二者在使用层面,有很大的相似性,因而不再详细介绍 2.开启线程的两种方式 2.1.方式一 from threading import Thread import time def task(name): print(f"{name} is running") time.sleep(2) print(f"{name} i

2-2 开启线程的两种方式

一 threading模块介绍 multiprocess模块的完全模仿了threading模块的接口,二者在使用层面,有很大的相似性,因而不再详细介绍 二 开启线程的两种方式 方式一 from threading import Thread import time def sayhi(name): time.sleep(2) print('%s say hello' %name) if __name__ == '__main__': t=Thread(target=sayhi,args=('eg

【java并发】传统线程技术中创建线程的两种方式

传统的线程技术中有两种创建线程的方式:一是继承Thread类,并重写run()方法:二是实现Runnable接口,覆盖接口中的run()方法,并把Runnable接口的实现扔给Thread.这两种方式大部分人可能都知道,但是为什么这样玩就可以呢?下面我们来详细分析一下这两种方法的来龙去脉. 1. 揭秘Thread中run()方法 上面我们看到这两种方式都跟run()方法有关,所以我们来看一下Thread的源码中run()方法到底都干了什么: @Override public void run()

创建线程的两种方式比较Thread VS Runnable

1.首先来说说创建线程的两种方式 一种方式是继承Thread类,并重写run()方法 1 public class MyThread extends Thread{ 2 @Override 3 public void run() { 4 // TODO Auto-generated method stub 5 6 } 7 } 8 //线程使用 9 MyThread mt = new MyThread(); //创建线程 10 mt.start(); //启动线程 另外一种方式是实现Runnabl

黑马程序员——创建线程的两种方式

java中创建线程有两种方式: 1.继承Thread类 步骤: (1)定义一个类继承Thread类 (2)复写Thread类中的run()方法 (3)调用start()方法:启动线程及调用run()方法 2.实现Runnable接口的方式 步骤:(1)定义一个类实现Runnable接口 (2)覆盖Runnable接口中的run()方法,将线程要运行的代码放到该run方法中 (3)通过Thread类建立线程对象 (4)将实现Runable接口的类对象作为实际参数传递给Thread的构造函数. (5

Java并发编程-创建线程的两种方式及区别

转载请注明:http://blog.csdn.net/UniKylin/article/details/45016117 1.线程和进程的区别 并行:是多个任务在同一时间同时执行,例如多核计算机同时计算的任务可以理解为并行 并发:从微观上看是多个任务抢占一个CPU从而执行自己的任务,轮流执行任务,但是如果遇到资源冲突的时候并没有从根本提高执行效率.但是提高了CPU的使用效率. 前段时间在GitHub上的一幅图可以很好的阐述上面的概念非常形象 2.Java中创建线程的两种方式 1.第一种方式:直接

开辟线程的两种方式

/** 自定义执行单元的两种方式 区别 runnable避免了单继承的局限性 runnable资源可以被独立共享 多线程如何找问题1.明确哪些代码是多线程运行代码2.明确哪些是共享数据3.明确多线程代码中哪些语句是操作共享数据的 @author WangShuang /public class Test {public static void main(String[] args) {/MyThread t0=new MyThread();MyThread t1=new MyThread();t