多进程_多线程_协程

多进程:

多进程代码:
import multiprocessing
def dance():
    .....
def sing():
    .....
if __name__ == '__main__':
    # group:表示进程组  目前只能为None
    # target:表示执行进程的任务名(函数名,方法名)
    # name: 进程名称,默认是Process-1,....
    dance_proess = multiprocessing.Process(target=dance,name='myprocess1')
    sing_proess = multiprocessing.Process(target=sing)
    # 启动子进程执行对应的任务
    dance_proess.start()
    sing_proess.start()
多进程执行带有参数的任务:
def task(count):
	.........
if __name__ == '__main__':
    # args: 以元组的方式给任务传入参数(只有一个数据必须加逗号)
    sub_process = multiprocessing.Process(target=task, args=(5,))
    # kwargs: 以字典方式传入参数
    sub_process = multiprocessing.Process(target=task, kwargs={"count":3})
    
守护进程:

①进程间不共享全局变量
②主进程会等待所有子进程执行结束在结束
设置守护进程的两个方式:
①进程名.daemon = True (在进程执行前写) start()前
②进程名.terminate() (在主进程退出前写) exit()前

多线程:

导入线程模块: import threading
创建子线程并指定执行任务:sub_thread = threading.Thread(target=任务名)
线程执行任务并传参的两种方式:元组args 字典kwargs 和进程一样

守护主线程:

①sub_thread = threading.Thread(target=show_info, daemon=True)
②sub_thread.setDaemon(True)

线程之间共享全局变量但是会产生全局变量数据错误
解决方式:线程等待(join) 和 互斥锁
线程等待:

first_thread.start()
first_thread.join()
second_thread.start()

互斥锁: (要在合适的地方释放锁 避免死锁)

创建全局互斥锁:threading.Lock()
上锁:lock.acquire()
释放锁:lock.release()

协程

安装: pip install gevent
import gevent
def f(n):
	......
g1 = gevent.spawn(f,5)
g2 = gevent.spawn(f,5)
g1.join()
g2.join()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值