并发编程

一、并发编程概念
在这里插入图片描述

import time
import threading

def worker(n):
    print('函数执行开始与:{}'.format(time.ctime()))
    time.sleep(n)
    print('函数执行结束于:{}'.format(time.ctime()))

def main():
    print(f'【主函数执行开始于:{time.ctime()}】')
    threads=[]
    t1=threading.Thread(target=worker,args=(4,))
    threads.append(t1)

    t2 = threading.Thread(target=worker, args=(2,))
    threads.append(t2)

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


    print(f'【主函数执行结束于:{time.ctime()}】')


if __name__=='__main__':
    main()

运行结果为:

【主函数执行开始于:Wed Mar 18 10:59:58 2020】
函数执行开始与:Wed Mar 18 10:59:58 2020
函数执行开始与:Wed Mar 18 10:59:58 2020
函数执行结束于:Wed Mar 18 11:00:00 2020
函数执行结束于:Wed Mar 18 11:00:02 2020
【主函数执行结束于:Wed Mar 18 11:00:02 2020

2.用派生类实现多线程

import time
import threading
"threading.Thread派生类实现多线程"

def worker(n):
    print('{}函数执行开始于:{}'.format(threading.current_thread().name,time.ctime()))
    time.sleep(n)
    print(f'{threading.current_thread().name}函数执行结束于:{time.ctime}')

class MyThread(threading.Thread):
    def __init__(self,func,args):
        threading.Thread.__init__(self )
        self.func=func
        self.args=args
    def run(self):
        self.func(*self.args)
def main():
    print(f'【主函数执行开始于:{time.ctime()}】')
    threads=[]
    t1=MyThread(worker,(4,))
    threads.append(t1)

    t2 = MyThread(worker, (2,))
    threads.append(t2)

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


    print(f'【主函数执行结束于:{time.ctime()}】')


if __name__=='__main__':
    main()

运行结果:

【主函数执行开始于:Wed Mar 18 11:14:49 2020】
Thread-1函数执行开始于:Wed Mar 18 11:14:49 2020
Thread-2函数执行开始于:Wed Mar 18 11:14:49 2020
Thread-2函数执行结束于:<built-in function ctime>
Thread-1函数执行结束于:<built-in function ctime>
【主函数执行结束于:Wed Mar 18 11:14:53 2020

3.多进程

import multiprocessing
import time

def func(n):
    print(f'{multiprocessing.current_process().name} 执行开始于:{time.ctime()}')
    time.sleep(n)
    print(f'{multiprocessing.current_process().name} 执行结束于:{time.ctime()}')

def main():
    print(f'主函数运行于:{time.ctime()}')
    process=[]
    p1=multiprocessing.Process (target=func,arg=(4,))
    process.append(p1)

    p2=multiprocessing.Process (target=func,arg=(2,))
    process.append(p2)

    for p in process:
        p.start()
    for p in process:
        p.join()
    print(f'主函数结束于:{time.ctime()}')

if __name__=='__main__':
    main()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值