Python与多线程

感谢这位博主帮我打开了多线程的门https://blog.youkuaiyun.com/m0_38011218/article/details/81938261

首先我之前学的java多线程,在java.lang包中有thread类。我们只要集成这个类然后start()。很简单有四种方式

详细见https://www.cnblogs.com/shoshana-kong/p/9071602.html

 

python具有异曲同工之妙

函数方式;就是简单调用库中的方法 

import threading
import time


def sing(num):
    for i in range(num):
        print("sing%d" % i)
        time.sleep(1)


def dance(num):
    for i in range(num):
        print("dancd%d" % i)
        time.sleep(1.5)


if __name__ == '__main__':
    t_sing = threading.Thread(target=sing, args=(5, ))
    t_dance = threading.Thread(target=dance, args=(5, ))
    t_sing.start()
    t_dance.start()

time.sleep()是为了让运行的顺序明显一点

 第二种继承方式:

import threading
import time

class Mythread(threading.Thread):
    def run(self):
        for i in range(3):
            time.sleep(1)
            msg = 'i\'m' + self.name + '@' +str(i)
            print(msg)

def test():
    for i in range(5):
        t=Mythread()
        t.start()

if __name__ == '__main__':
    test()

join方法可以阻塞主进程(注意只能阻塞主进程,其他子进程是不能阻塞的),直到 子线程执行完,再解阻塞。

无join前

import threading
import time

class Mythread(threading.Thread):
    def run(self):
        for i in range(3):
            time.sleep(1)
            msg = 'i\'m' + self.name + '@' +str(i)
            print(msg)

def test():
    for i in range(2):
        t=Mythread()
        t.start()

if __name__ == '__main__':
    test()
    print("hello")

join之后:

import threading
import time

class Mythread(threading.Thread):
    def run(self):
        for i in range(3):
            time.sleep(1)
            msg = 'i\'m' + self.name + '@' +str(i)
            print(msg)

def test():
    for i in range(2):
        t=Mythread()
        t.start()
        t.join()

if __name__ == '__main__':
    test()
    print("hello")

先阻塞 了主进程,所以hello是最后输出的

 

最后让我想起了仿佛在昨日(其实一年前)考完的操作系统,时间片轮转问题,互斥锁问题,wow果然操作系统是门玄学,现在忘得差不多了

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值