Error message here!

Hide Error message here!

Error message here!

Hide Error message here!

Error message here!

Close

LeoZhanggg 2019-01-30 19:22:00 阅读数:313 评论数:0 点赞数:0 收藏数:0

`一、无线程:示例：`
`import time`
```start = time.time()
people = 500 # 假设有500个人
def action(num):
global people
while people>0:
people -= 50 # 每次运输50人
print("车辆编号：%d, 当前车站人数：%d" %(num, people))
time.sleep(1)
num = 1 # 车辆编号
action(num)
end = time.time()
print("Duration time: %0.3f" %(end-start))```
`运行结果：`
```C:\Python37\python.exe Y:/Project-python/threading/test.py

Duration time: 10.001
Process finished with exit code 0```
`二、单线程:编码示例：`
```import threading
import time```
```start = time.time()
people = 500 # 假设有500个人
def action(num):
global people
while people>0:
people -= 50 # 每次运输50人
print("车辆编号：%d, 当前车站人数：%d" %(num, people))
time.sleep(1)
num = 1 # 车辆编号
vehicle.start() # 启动车辆
vehicle.join() # 检查到站车辆

end = time.time()
print("Duration time: %0.3f" %(end-start))```
`运行结果：`
```C:\Python37\python.exe Y:/Project-python/threading/test.py

Duration time: 10.001
Process finished with exit code 0```

`三、多线程（传递对象方式）：编码示例：`
```# -*- coding: utf-8 -*
import time
people = 500
def __init__(self, num):
self.num = num
def run(self):
global people
while people > 0:
people -= 50
print("车辆编号：%d, 当前车站人数：%d" % (self.num, people))
time.sleep(1)
start = time.time()
vehicles = [] # 新建车辆组
for num in range(5): # 设置车辆数
vehicles.append(vehicle) # 添加车辆到车辆组中
vehicle.start() #启动车辆
for vehicle in vehicles:
vehicle.join() # 分别检查到站车辆
end = time.time()
print("Duration time: %0.3f" % (end-start))```
`运行结果：`
```C:\Python37\python.exe Y:/Project-python/threading/test.py

Duration time: 2.001
Process finished with exit code 0```

编码示例：

```# -*- coding: utf-8 -*
import time
people = 500
def __init__(self, num):
self.num = num
def run(self):
global people
while people > 0:
people -= 50
print("车辆编号：%d, 当前车站人数：%d" % (self.num, people))
time.sleep(1)
start = time.time()
vehicles = []
for num in range(5):
vehicles.append(vehicle)
vehicle.start()
for vehicle in vehicles:
vehicle.join()
end = time.time()
print("Duration time: %0.3f" % (end-start))```

```C:\Python37\python.exe Y:/Project-python/threading/test.py

Duration time: 2.003
Process finished with exit code 0```

1. 通过结果不难发现，不使用线程类和使用单线程运行时间是一样的，因为我们正常执行一个脚本，本质上就是单线程。

3. 多线程运行时间明显比单线程快的多，从理论上来说是和线程数成正比的，但是实际并非是线程越多越好，因为线程越多所消耗的资源也就越多。

a. 创建线程对象后，必须通过调用线程的start（）方法启动其活动，这将在单独的控制线程中调用run（）方法。

b. 一旦线程的活动开始，线程就被认为是“活着的”，当run（）方法终止时，它会停止活动，或者引发异常。

c. 线程可以调用is_alive（）方法测试是否处于活动状态，其他线程可以调用线程的join（）方法，这将阻塞调用线程，直到调用其join（）方法的线程终止。

d. 线程有一个名称，这个名称可以传递给构造函数，并通过name属性读取或更改。

e. 线程可以标记为“守护程序线程”，这个标志的意义在于，当只剩下守护进程线程时，整个Python程序都会退出，可以通过守护程序属性设置该标志。

----- 菜鸟随笔，欢迎各路大神指点。

----- 转载请注明原作，谢谢：https://www.cnblogs.com/leozhanggg/p/10335098.html

https://www.cnblogs.com/leozhanggg/p/10335098.html

30万现金开奖等你来领