import time import os from random import randint from threading import Thread class MyThreadClass (Thread): def __init__(self, name, duration): Thread.__init__(self) self.name = name self.duration = duration def run(self): print ("---> " + self.name + \ " running, belonging to process ID "\ + str(os.getpid()) + "\n") time.sleep(self.duration) print ("---> " + self.name + " over\n") def main(): start_time = time.time() # Thread Creation thread1 = MyThreadClass("Thread#1 ", randint(1,10)) thread2 = MyThreadClass("Thread#2 ", randint(1,10)) thread3 = MyThreadClass("Thread#3 ", randint(1,10)) # Thread Running thread1.start() thread2.start() thread3.start() # Thread joining thread1.join() thread2.join() thread3.join() # End print("End") #Execution Time print("--- %s seconds ---" % (time.time() - start_time)) if __name__ == "__main__": main()代码超级详细解释
时间: 2024-02-24 11:54:43 浏览: 62
2to8-10-16.rar_16进制_random number python
这段代码是一个使用 Python 中 threading 模块创建和运行多线程的示例。下面逐行详细解释它的实现过程:
1. 导入需要使用的模块,包括 time、os、randint 和 threading。
```python
import time
import os
from random import randint
from threading import Thread
```
2. 创建一个名为 MyThreadClass 的类,该类继承自 threading.Thread 类。MyThreadClass 类有两个属性,分别是线程的名称和运行时间。该类还有一个 run() 方法,该方法定义了线程的具体逻辑,包括输出线程名称和进程 ID,睡眠指定的时间,然后输出线程完成的信息。
```python
class MyThreadClass (Thread):
def __init__(self, name, duration):
Thread.__init__(self)
self.name = name
self.duration = duration
def run(self):
print("---> " + self.name + " running, belonging to process ID " + str(os.getpid()) + "\n")
time.sleep(self.duration)
print("---> " + self.name + " over\n")
```
3. 创建一个名为 main() 的函数,该函数是整个程序的入口。在 main() 函数中,首先记录程序开始执行的时间。
```python
def main():
start_time = time.time()
```
4. 创建三个 MyThreadClass 类型的对象,分别表示三个线程。每个线程的名称是随机生成的,运行时间也是随机生成的。
```python
thread1 = MyThreadClass("Thread#1 ", randint(1,10))
thread2 = MyThreadClass("Thread#2 ", randint(1,10))
thread3 = MyThreadClass("Thread#3 ", randint(1,10))
```
5. 启动三个线程,分别使用 start() 方法启动。
```python
thread1.start()
thread2.start()
thread3.start()
```
6. 等待三个线程执行完成,使用 join() 方法等待线程结束。
```python
thread1.join()
thread2.join()
thread3.join()
```
7. 输出程序执行结束的信息。
```python
print("End")
```
8. 输出程序执行的时间。
```python
print("--- %s seconds ---" % (time.time() - start_time))
```
9. 判断程序是否从当前文件运行,如果是,则执行 main() 函数。
```python
if __name__ == "__main__":
main()
```
最终,这段代码会创建三个线程并行执行,每个线程的运行时间是随机生成的。程序会等待所有线程执行结束后输出程序执行结束的信息和执行时间。
阅读全文