python入门三十天----线程 调用两个CPU

线程threeding:   + join

练习:

 1 #!/usr/bin/env python3
 2 #-*- coding:utf-8 -*-
 3 ‘‘‘
 4 Administrator
 5 2018/8/10
 6 ‘‘‘
 7
 8 import threading
 9 from time import time,sleep,asctime,ctime
10
11 def music(name):
12     for i in range(2):
13         print("......music %s .. %s is doing         %s "%(i,name,ctime()))
14         sleep(2)
15         print(".on mygod.....music %s.. %s is end    %s" %(i,name,ctime()))
16 def move(name):
17     for i in range(2):
18
19         print("......move%s .. %s is doing           %s   "%(i,name,ctime()))
20         sleep(3)
21         print(".on mygod..%s...move .. %s is end     %s" %(i,name,ctime()) )
22
23 threads=[]
24 t1=threading.Thread(target=music,args=("七里香",))
25 threads.append(t1)
26 t2=threading.Thread(target=move,args=("我不是药神",))
27 threads.append(t2)
28
29 if __name__=="__main__":
30     for t in threads:
31         t.start()
32     t.join()
33
34
35     print("all is  end.")

 1 import threading
 2 from time import ctime,sleep
 3 import time
 4
 5 def music(func):
 6     for i in range(2):
 7         print ("Begin listening to %s. %s" %(func,ctime()))
 8         sleep(4)
 9         print("end listening %s"%ctime())
10
11 def move(func):
12     for i in range(2):
13         print ("Begin watching at the %s! %s" %(func,ctime()))
14         sleep(5)
15         print(‘end watching %s‘%ctime())
16
17 threads = []
18 t1 = threading.Thread(target=music,args=(‘七里香‘,))
19 threads.append(t1)
20 t2 = threading.Thread(target=move,args=(‘阿甘正传‘,))
21 threads.append(t2)
22
23 if __name__ == ‘__main__‘:
24
25     for t in threads:
26         # t.setDaemon(True)
27         t.start()
28         # t.join()
29     # t1.join()
30     t2.join()########考虑这三种join位置下的结果?
31     print ("all over %s" %ctime())

setDaemon(True):

将线程声明为守护线程,必须在start() 方法调用之前设置, 如果不设置为守护线程程序会被无限挂起。这个方法基本和join是相反的。当我们 在程序运行中,执行一个主线程,如果主线程又创建一个子线程,主线程和子线程 就分兵两路,分别运行,那么当主线程完成想退出时,会检验子线程是否完成。如 果子线程未完成,则主线程会等待子线程完成后再退出。但是有时候我们需要的是 只要主线程完成了,不管子线程是否完成,都要和主线程一起退出,这时就可以 用setDaemon方法啦

 1 #!/usr/bin/env python3
 2 #-*- coding:utf-8 -*-
 3 ‘‘‘
 4 Administrator
 5 2018/8/10
 6 ‘‘‘
 7
 8 import threading
 9 from time import time,sleep,asctime,ctime
10
11 def music(name):
12     for i in range(2):
13         print("......music %s .. %s is doing         %s "%(i,name,ctime()))
14         sleep(2)
15         print(".on mygod.....music %s.. %s is end    %s" %(i,name,ctime()))
16 def move(name):
17     for i in range(2):
18
19         print("......move%s .. %s is doing           %s   "%(i,name,ctime()))
20         sleep(3)
21         print(".on mygod..%s...move .. %s is end     %s" %(i,name,ctime()) )
22
23 threads=[]
24 t1=threading.Thread(target=music,args=("七里香",))
25 threads.append(t1)
26 t2=threading.Thread(target=move,args=("我不是药神",))
27 threads.append(t2)
28
29 if __name__=="__main__":
30     for t in threads:
31         t.setDaemon(True)#守护线程
32         t.start()
33     # t.join()
34     print("all is  end.                             %s"%ctime())

 1 #!/usr/bin/env python3
 2 #-*- coding:utf-8 -*-
 3 ‘‘‘
 4 Administrator
 5 2018/8/10
 6 ‘‘‘
 7
 8 import threading
 9 from time import time,sleep,asctime,ctime
10
11 def music(name):
12     for i in range(2):
13         print("......music %s .. %s is doing         %s "%(i,name,ctime()))
14         sleep(2)
15         print(".on mygod.....music %s.. %s is end    %s" %(i,name,ctime()))
16 def move(name):
17     for i in range(2):
18
19         print("......move%s .. %s is doing           %s   "%(i,name,ctime()))
20         sleep(3)
21         print(".on mygod..%s...move .. %s is end     %s" %(i,name,ctime()) )
22
23 threads=[]
24 t1=threading.Thread(target=music,args=("七里香",))
25 threads.append(t1)
26 t2=threading.Thread(target=move,args=("我不是药神",))
27 threads.append(t2)
28
29 if __name__=="__main__":
30     t2.setDaemon(True)  # 守护线程
31     for t in threads:
32         # t.setDaemon(True)#守护线程
33         t.start()
34     # t.join()
35     print("all is  end.                             %s"%ctime())
36
37 """
38 ......music 0 .. 七里香 is doing         Fri Aug 10 12:21:46 2018
39 ......move0 .. 我不是药神 is doing           Fri Aug 10 12:21:46 2018
40 all is  end.                             Fri Aug 10 12:21:46 2018
41 .on mygod.....music 0.. 七里香 is end    Fri Aug 10 12:21:48 2018
42 ......music 1 .. 七里香 is doing         Fri Aug 10 12:21:48 2018
43 .on mygod..0...move .. 我不是药神 is end     Fri Aug 10 12:21:49 2018
44 ......move1 .. 我不是药神 is doing           Fri Aug 10 12:21:49 2018
45 .on mygod.....music 1.. 七里香 is end    Fri Aug 10 12:21:50 2018
46 .on mygod..1...move .. 我不是药神 is end     Fri Aug 10 12:21:52 2018
47
48 -----------------------t2.setDaemon(True)----------------------------------------------
49 ......music 0 .. 七里香 is doing         Fri Aug 10 12:20:30 2018
50 ......move0 .. 我不是药神 is doing           Fri Aug 10 12:20:30 2018
51 all is  end.                             Fri Aug 10 12:20:30 2018
52 .on mygod.....music 0.. 七里香 is end    Fri Aug 10 12:20:32 2018
53 ......music 1 .. 七里香 is doing         Fri Aug 10 12:20:32 2018
54 .on mygod..0...move .. 我不是药神 is end     Fri Aug 10 12:20:33 2018
55 ......move1 .. 我不是药神 is doing           Fri Aug 10 12:20:33 2018
56 .on mygod.....music 1.. 七里香 is end    Fri Aug 10 12:20:34 2018     ####   t1结束后, 程序就立即结束
57
58 """

守护进程

join():

在子线程完成运行之前,这个子线程的父线程将一直被阻塞。

其它方法

 1 thread 模块提供的其他方法:
 2 # threading.currentThread(): 返回当前的线程变量。
 3 # threading.enumerate(): 返回一个包含正在运行的线程的list。正在运行指线程启动后、结束前,不包括启动前和终止后的线程。
 4 # threading.activeCount(): 返回正在运行的线程数量,与len(threading.enumerate())有相同的结果。
 5 # 除了使用方法外,线程模块同样提供了Thread类来处理线程,Thread类提供了以下方法:
 6 # run(): 用以表示线程活动的方法。
 7 # start():启动线程活动。
 8 # join([time]): 等待至线程中止。这阻塞调用线程直至线程的join() 方法被调用中止-正常退出或者抛出未处理的异常-或者是可选的超时发生。
 9 # isAlive(): 返回线程是否活动的。
10 # getName(): 返回线程名。
11 # setName(): 设置线程名。

原文地址:https://www.cnblogs.com/Mengchangxin/p/9454285.html

时间: 2024-10-02 23:01:35

python入门三十天----线程 调用两个CPU的相关文章

Python进阶(三十四)-Python3多线程解读

Python进阶(三十四)-Python3多线程解读 线程讲解 ??多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理. 用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度. 程序的运行速度可能加快. 在一些等待的任务实现上如用户输入.文件读写和网络收发数据等,线程就比较有用了.在这种情况下我们可以释放一些珍贵的资源如内存占用等等. ??线程在执行过程中与进程还是有区别的.每个独立

Python进阶(三十九)-数据可视化の使用matplotlib进行绘图分析数据

Python进阶(三十九)-数据可视化の使用matplotlib进行绘图分析数据 ??matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中. ??它的文档相当完备,并且 Gallery页面 中有上百幅缩略图,打开之后都有源程序.因此如果你需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定. ??在Linux下比较著名的数据图工具还有gnuplot

Python进阶(三十六)-Web框架Django项目搭建全过程

Python进阶(三十六)-Web框架Django项目搭建全过程 ??IDE说明: Win7系统 Python:3.5 Django:1.10 Pymysql:0.7.10 Mysql:5.5 ??Django 是由 Python 开发的一个免费的开源网站框架,可以用于快速搭建高性能,优雅的网站! Django 特点 强大的数据库功能 用python的类继承,几行代码就可以拥有一个丰富,动态的数据库操作接口(API),如果需要你也能执行SQL语句. 自带的强大的后台功能 几行简单的代码就让你的网

python入门第二十六天--网络通信

网络编程 自从互联网诞生以来,现在基本上所有的程序都是网络程序,很少有单机版的程序了. 计算机网络就是把各个计算机连接到一起,让网络中的计算机可以互相通信.网络编程就是如何在程序中实现两台计算机的通信. 举个例子,当你使用浏览器访问新浪网时,你的计算机就和新浪的某台服务器通过互联网连接起来了,然后,新浪的服务器把网页内容作为数据通过互联网传输到你的电脑上. 由于你的电脑上可能不止浏览器,还有QQ.Skype.Dropbox.邮件客户端等,不同的程序连接的别的计算机也会不同,所以,更确切地说,网络

Python进阶(三十五)-Fiddler命令行和HTTP断点调试

Python进阶(三十五)-Fiddler命令行和HTTP断点调试 一. Fiddler内置命令 ??上一节(使用Fiddler进行抓包分析)中,介绍到,在web session(与我们通常所说的session不是同一个概念,这里的每条HTTP请求都称为一个session).界面中能够看到Fiddler抓取的全部HTTP请求.而为了更加方便的管理全部的session, Fiddler提供了一系列内置的函数用于筛选和操作这些session(习惯命令行操作Linux的童鞋应该能够感受到这会有多么方便

python入门第二十四天----成员修饰符 类的特殊成员

1 #成员修饰符 修饰符可以规定内部的字段.属性.方法等 是共有的成员,私有的成员 2 class Foo: 3 def __init__(self,name,age): 4 self.name=name 5 self.age=age #可以在外部直接访问 6 7 obj=Foo('Jack',22) 8 print(obj.name) 9 print(obj.age) 共有字段 1 #成员修饰符 修饰符可以规定内部的字段.属性.方法等 是共有的成员,私有的成员 2 class Foo: 3 d

python入门第二十九天-socketserver

简单并发实例 服务端: #!/usr/bin/env python3 #-*- coding:utf-8 -*- ''' Administrator 2018/8/3 ''' import socketserver class MyServer(socketserver.BaseRequestHandler): #定义自己的类,继承固定的类 socketserver.BaseRequestHandler def handle(self): #方法名 必须用handle 为了重新父类的方法 pri

笨办法学Python(三十)

习题 30: Else 和 If 前一习题中你写了一些 "if 语句(if-statements)",并且试图猜出它们是什么,以及实现的是什么功能.在你继续学习之前,我给你解释一下上一节的加分习题的答案.上一节的加分习题你做过了吧,有没有? 你认为 if 对于它下一行的代码做了什么? If 语句为代码创建了一个所谓的"分支",就跟 RPG 游戏中的情节分支一样.if 语句告诉你的脚本:"如果这个布尔表达式为真,就运行接下来的代码,否则就跳过这一段.&quo

python第三十五天-----作业完成--学校选课系统

选课系统:角色:学校.学员.课程.讲师要求:1. 创建北京.上海 2 所学校2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开3. 课程包含,周期,价格,通过学校创建课程 4. 通过学校创建班级, 班级关联课程.讲师5. 创建学员时,选择学校,关联班级5. 创建讲师角色时要关联学校, 6. 提供两个角色接口6.1 学员视图, 可以注册, 交学费, 选择班级,6.2 讲师视图, 讲师可管理自己的班级, 上课时选择班级, 查看班级学员列表 ,