python-进程

1558-王同学

发表文章数:9

热门标签

首页 » Python » 正文

python-进程

一、进程

from multiprocessing import Process
process = Process(target = 函数,name = 进程的名字,args = (给函数传递的参数))

对象调用方法:

  • proce.start() —> 启动进程并执行任务
  • process.run() —> 只是执行了任务但是没有启动进程
  • terminate() —> 终止

进程池

Pool = Pool(max)
创建进程池对象
1、非阻塞式

全部添加到队列中,立刻返回

pool.apply_async() ----> 非阻塞的
pool.close()
pool.join() ----> 让主进程让步

举例

from multiprocessing import Pool
import time
from random import random
import os
def task(task_name):
    print('开始做任务:',task_name)
    start = time.time()
    time.sleep(random()*2)
    end = time.time()
    print('完成任务',task_name,'用时:',(end - start),'任务进程id:',os.getid())
container = []
def callback_func():
    print(n)
if __name__=='__main__':
    pool = Pool(5)
    tasks = ['听音乐','吃饭','洗衣服','打游戏','散步','看孩子','做饭']
    for task1 in tasks:
        pool.apply_async(task,args=(task1,),callback=callback_func)
    pool.close()
    pool.join()
    print('over!')
2、阻塞式

添加一个执行一个任务,如果一个任务不结束,另一个任务就进不来

pool.apply() ----> 阻塞的

线程

1、 创建线程

法一:

t = Thread(target = func,name = '',args = (),kwargs = {})
t.start() ----> 就绪状态
run()
join()

法二: 自定义线程

class MyThread(Thread):
    def __init__(self,name):
        super().__init__()
        self.name = name
    def run(self):
        任务
t = MyThread('name')
t.start()

2、数据共享

进程共享数据与线程共享数据区别:

  1. 进程是每个进程中都有一份
  2. 线程是共同一个数据 —-> 数据安全性问题
lock  = Lock()
lock.acqure()
......
lock.release()
----> 只要用锁:死锁(避免)

3、进程间通信:生产者与消费者

生产者:线程
消费者:线程

import queue
from multiprocessing import put
q = queue.Queue()
----> 创建生产者
th = threading.Thread(target = produce,args = (q,))
th.start()
----> 创建消费者
tc = threading.Thread(target = consume,args = (q,))
tc.start()
q.put()
q.get()


q = Queue(5)
q.put('A')
put()如果queue满了则只能等待,除非有“空地”则添加成功
if not q.full():
    q.put('F',timeout=3)
else:
    print('队列已满!')
标签:

未经允许不得转载:作者:1558-王同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《python-进程》 发布于2021-02-10

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录