内容简介:
在pythong中,除了用threading来实现多线程外,还可以通过继承Thread,重写run方法来实现一个自定义的类。
下面介绍第二种方式:从Thread继承,然后重写run方法:
例子程序如下:
功能:创建两个线程,一个用继承Thread方式,一个用threading来实现。
代码如下:
#!/usr/bin/python
# -*- coding: utf-8 -*-
#文件:test_threadclass.py
import threading
import time
#自定义类
class MyThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self);
def run(self):
for i in range(5):
print("MyThread: =====i:",str(i));
time.sleep(1);
# time.sleep(random.randrange(0,2));
#功能:求data中的数据的和,data是一个list。
def sum(data):
print("sum data===begin==");
sum_res = 0;
print("input data of sum:");
for i in range(len(data)):
time.sleep(1); #延时1s
print('data in sum_res',data[i]);
sum_res = sum_res + (int)(data[i]); #求和,注意需要用int进行数字字符的转换
print("input data of sum_res:",sum_res);
return sum_res;
#test
def test_func():
d1_list=[];
i = 0;
while i<10:
d1_list.append(i);
i= i + 1;
#创建thread
sum_thread = threading.Thread(target=sum,args=(d1_list,));
mMyThread = MyThread();
#启动线程
sum_thread.start();
mMyThread.start();
#main
if __name__ == '__main__':
test_func();
运行结果:
aaaaa:chaper user1$ python test_threadclass.py
sum data===begin==
input data of sum:
MyThread: =====i: 0
data in sum_res 0
扫描二维码关注公众号,回复: 12924772 查看本文章MyThread: =====i: 1
data in sum_res 1
MyThread: =====i: 2
data in sum_res 2
MyThread: =====i: 3
data in sum_res 3
MyThread: =====i: 4
data in sum_res 4
data in sum_res 5
data in sum_res 6
data in sum_res 7
data in sum_res 8
data in sum_res 9
input data of sum_res: 45
说明:
从运行结果可以看到两个线程在交替输出,说明两个线程在同时运行。