8.python多线程

1.基本的多线程

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import threading


def fooa(a):
    print a*2


def foob(b):
    print b*3


def fooc(c):
    print c*4

if __name__ == '__main__':

    threads = []
    ta = threading.Thread(target=fooa, args=(2,))
    tb = threading.Thread(target=foob, args=(2,))
    tc = threading.Thread(target=fooc, args=(2,))
    threads.append(ta)
    threads.append(tb)
    threads.append(tc)
    for t in threads:
        t.setDaemon(True)
        t.start()
        t.join()

 

2.可以获取子线程数据的多线程

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import threading


class MyThread(threading.Thread):

    def __init__(self, func, args=()):
        super(MyThread, self).__init__()
        self.func = func
        self.args = args

    def run(self):
        self.result = apply(self.func, self.args))

    def get_result(self):
        try:
            return self.result  # 如果子线程不使用join方法,此处可能会报没有self.result的错误
        except Exception:
            return None


def fooa(a):
    return a*2


def foob(b):
    return b*3


def fooc(c,d):
    return c*d

if __name__ == '__main__':

    threads = []

    ta = MyThread(fooa, args=(2))
    tb = MyThread(foob, args=(2))
    tc = MyThread(fooc, args=(2,4))

    threads.append(ta)
    threads.append(tb)
    threads.append(tc)

    for t in threads:
        t.setDaemon(True)
        t.start()
        t.join()

    print ta.get_result()
    print tb.get_result()
    print tc.get_result()

 

posted @ 2017-09-27 21:02  桃源仙居  阅读(70)  评论(0)    收藏  举报