基于python的多进程和多线程编程过程

1 篇文章 0 订阅
1 篇文章 0 订阅

多进程创建过程(用到process库)

1.定义用到的函数
2.创建进程:

进程名 = Process(target=函数名,agrs=(传给函数的参数),name=子进程名称,kwags=调用对象字典)

3.可选参数:

进程名.daemon = True/False

False则主进程会等到子进程结束再退出
True则主进程不会理会子进程是否结束,直接退出
4.起动进程

进程名.start()

5.关闭进程

进程名.close() #关闭进程池不再接收新任务(完成后结束)
进程名.terminate #结束工作处理,不再处理任务

6.阻塞

进程名.join #主进程阻塞等待子进程的退出

   

进程池pool

1.定义进程池

名称 = pool(最大进程数n)

2.加入进程去进程池

名称.apply_async(目标函数,目标参数)

3.关闭进程池

名称.close()

4.等待所有子程序完成

名称.join()

   

多线程创建过程

方法一(继承类):

1.定义类及其函数

class 名称(threading,Thread)

2.名称 = 类名称(参数)
3.名称.start()
4.名称.join()
   

方法一(直接调用thread):

1.定义函数
2.定义线程

线程名 = threading.Thread(target=函数名,name='线程名', agrs=(参数))

3.名称.start()
4.名称.join()
   

多线程加锁:

原因:多进程各参数再各进程单独备份互不影响,但多线程会相互影响
用法:

名称 = threading.Lock() #实例化
名称.acquire()#上锁
名称.release()#要解锁否则死锁

   

多进程间通信

使用Queue队列通信交换数据(单向通信):

1.父进程创建Queue

名称 = Queus()

2.创建进程
3.进程相对应函数加入

名称.put(数据)
名称.get(数据)

4.名称.start()
5.名称.join()

   

使用Pipe管道通信交换数据(双向通信,可发送可接收):

1.创建Pipe双向管道

c1,c2 = pipe()

2.通信

c1.send('数据')#c2会收到
c2.recv('数据')

多线程间通信

使用Queue队列通信交换数据(单向通信):

1.父进程创建Queue

名称 = Queus()

2.创建进程
3.进程相对应函数加入

名称.put(数据)
名称.get(数据)

4.名称.start()
5.名称.join()

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值