编写程序:创建10个线程,第1个线程计算从1加到10,第2个线程计算11加到20,...,第10个线程计算91加到100,最后把10个线程结果相加并输出。要求尽量能看到他们交叉输出。要求使用两种方法创建线程:Thread子类创建线程和Thread类直接创建线程对象。
时间: 2024-02-17 21:04:32 浏览: 15
使用Thread子类创建线程的代码如下:
```python
import threading
class MyThread(threading.Thread):
def __init__(self, start_num, end_num):
threading.Thread.__init__(self)
self.start_num = start_num
self.end_num = end_num
self.result = 0
def run(self):
for i in range(self.start_num, self.end_num + 1):
self.result += i
threads = []
for i in range(1, 11):
thread = MyThread((i - 1) * 10 + 1, i * 10)
threads.append(thread)
for thread in threads:
thread.start()
for thread in threads:
thread.join()
result = sum(thread.result for thread in threads)
print(result)
```
使用Thread类直接创建线程对象的代码如下:
```python
import threading
def sum(start_num, end_num, result):
for i in range(start_num, end_num + 1):
result += i
threads = []
results = [0] * 10
for i in range(1, 11):
thread = threading.Thread(target=sum, args=((i - 1) * 10 + 1, i * 10, results[i - 1]))
threads.append(thread)
for thread in threads:
thread.start()
for thread in threads:
thread.join()
result = sum(results)
print(result)
```
其中,sum函数的参数result是一个可变对象,可以在函数内部修改它的值,从而实现求和。