python基础--python中的多线程用继承Thread的方式来实现

内容简介:

在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

说明:
从运行结果可以看到两个线程在交替输出,说明两个线程在同时运行。


猜你喜欢

转载自blog.csdn.net/liranke/article/details/114645246