python学习-多进程多线程

多进程

from multiprocessing import Process

def func(name):
***

def main():
#args以tuple方式传入参数
process = Process(target = func,args=(‘Lucy’,))
process.start()
process.join()
if __name__ == ‘__main__’:
    main()

运行多个进行:

process = [Process(target=func,args=(‘Hello’,)) for i in range(10)]
for i in process:
i.start()
for i in process:
i.join()

Pipe

from multiprocessing import Process,Pipe
con1,con2 = Pipe()
def send():
data=’**’
con1.send(data)
def recv():
data1 = con2.recv()

def main():
Process(target = send,args=(‘Hello’,)).start()
Process(target = recv).start()
if __name__ == ‘__main__’:
    main()

Queue

from multiprocessing import Process,Queue
queue = Queue()

def f1(q):
i = ‘Hello’
q.put(i)

def f2(q):
q.get()

def main():
Process(target=f1,args=(queue,)).start()
Process(target=f2,args=(queue,)).start()

if __name__ == ‘__main__’:
main()

Value:实现数据在多进程之间共享,返回的value对象可以看做是一个全局共享的变量

from multiprocessing import Process,Value,Lock

def func(val,lock):
for i in range(50):
with lock:
val.value+=1

def main():
val = Value(‘i’,0)# i代表是整数,0是value的值
lock = Lock()
Process(target=func,args=(val,lock))

Pool 进程池,批量创建子进程,进程池内维持一个固定的进程数量,当有任务到来时,就去池子中去一个进程处理任务,处理完后,进程被返回进程池

from multiprocessing import Pool
def task(name):


if __name__ == ‘__main__’:
p = Pool(4)#创建进程池,有4个进程可用
for i in range(1,6):
#apply_async 异步启动进程池
p.apply_async(task,args=(i,))
p.close()
#关闭进程池
p.join()
#挂起主进程,直到进程池内任务全部完成

多线程

import threading
def func():

def main():
t = threading.Thread(target=func,args=(‘Hello’,))
t.start()
t.join()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值