多线程的使用:

  import threading

  def func(x):
    print(x)
  t= threading.Thread(target=func,args=(12,))
  # 线程启动
  t.start()
  # 主进程阻塞,等待子进程的退出
  t.join()
    # 设置线程为主线程的守护线程
  t.setDaemon()

多进程的使用
  from multiprocessing import Process
  def func(x):
    print(x)
  p = Process(target=func,args=(12,))
  p.start()# 启动子进程实例(创建子进程)
  p.is_alive()# 判断进程子进程是否还在活着
  p.join(timeout)# 是否等待子进程执行结束,或者等待多少秒
  p.terminate()# 不管任务是否完成,立即终止子进程
  p.daemon = True # 设置守护进程

线程池、进程池的使用:
  # 进程池
  from multiprocessing import Pool

  # 线程池
  from multiprocessing.dummy import Pool
  pool = Pool(5) # 同时最大运行线程或者进程个数

  def _excute(x,y):
    print(x+y)
  def _callback(self, temp): # temp必有参数
    print("线程或进程任务完成后的回调")

  pool.apply_async(target=_excute, callback=_callback)
  poll.close()# 关闭Pool,使其不再接受新的任务;
  poll.terminate()# 不管任务是否完成,立即终止;
  poll.join()# 主进程阻塞,等待子进程的退出,必须在close或terminate之后使用

进程或者线程的间通信工具--Queue

  # 线程池、多线程 使用的Queue
  from queue import Queue

  # 多进程使用的queue
  from multiprocessing import JoinableQueue as Queue

  # 进程池使用的queue
  from multiprocessing import Manager

  queue = Manager().Queue()
  queue = Queue()

  queue.qsize()# 返回当前队列包含的消息数量。
  queue.empty()# 如果队列为空,返回True,反之False。
  queue.full()# 如果队列满了,返回True,反之False。
  queue.put(item, block=True, timeout=None)

  将item消息写入队列,block默认值为True;
  如果block使用默认值,且没有设置timeout(单位秒),消息列队如果已经没有空间可写入,此时程序将被阻塞(停
  在写入状态),直到从消息列队腾出空间为止,如果设置了timeout,则会等待timeout秒,若还没空间,则抛
  出"Queue.Full"异常;
  如果block值为False,消息列队如果没有空间可写入,则会立刻抛出"Queue.Full"异常;

  
  queue.get(item, block=True, timeout=None)
 
  获取队列中的一条消息,然后将其从队列中移除,block默认值为True。如果block使用默认值,且没有设置
  timeout(单位秒),消息列队如果为空,此时程序将被阻塞(停在读取状态),直到从消息列队读到消息为止,如果
  设置了timeout,则会等待timeout秒,若还没读取到任何消息,则抛出"Queue.Empty"异常;
  如果block值为False,消息列队如果为空,则会立刻抛出"Queue.Empty"异常;
 
  # get方法并不能让queue的计数-1,必须调用task_done
  queue.task_done()

python多任务的导包问题的更多相关文章

  1. import 导包三种方法

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #导包三种方法 #(常用)完整的导入,也是最基本的方法 import re #自己定义别名,一般情况下尽量少用 ...

  2. python的导包问题

    有事会遇到在python代码中导入包错误问题,本文简单对python包的引入做简单介绍 简单说,我认为python导包一共有3种情况,分别是: 要导的包与当前文件在同一层要导的包在当前文件的底层(就是 ...

  3. python导包显示No module named XXX问题

    最近用sublime text写python脚本,在导包是一直显示No module named XXX. 问题描述: 首先文件夹的目录结构如下: count.py文件,代码如下: #coding=u ...

  4. python 设置默认的导包路径

    在python中 可以通过 sys 模块添加导包时的搜寻路径, sys.path 返回的是所有默认导包路径的列表(搜索次序从下标为零开始,直到寻找到需要导入的包结束) sys.path.insert( ...

  5. python导包语句执行

    今天在做项目中遇到一个问题,在first_page中引用login的登录方法,第一次执行登录可以正常登录,登录成功后,再选择返回主菜单,回到上个页面,再选择登录时报错“login_class isno ...

  6. python导包学习总结

    python初学者,对于导包纠结了不少时间,总结分享,持续前进~ Python导包的两种方法: 1.1  from 包.模块  import 方法名,调用时直接使用方法名() 1.2  from 包. ...

  7. python相对导包问题

    导包分为:绝对路径.相对路径 在测试时发现不能够使用相对路径 查过之后才知道: 运行模块(如:main.py)中导包只能使用绝对路径,不能使用相对路径 官方文档: Note that relative ...

  8. python导包问题,这一篇就够了

    解决办法: 将项目所在的根目录添加到sys.path中 在入口文件中加入如下代码: import sys import os # 将 项目的根目录添加到sys.path中 BASE_DIR = os. ...

  9. 记一次Python导包经历

    最近由于需要写一个脚本调用另一个文件里面的一个方法,试了很久都导包失败,特此记录一下 问题背景 1)脚本文件为send_reward.py,要调用public_model_func.py里面的一个类方 ...

随机推荐

  1. 【云安全与同态加密_调研分析(8)】同态加密技术及其应用分析——By Me

    ◆同态加密技术(Homomorphic Encryption, HE)及其应用◆ ◆加密方案◆ ◆应用领域◆ ◆厂商◆ ◆同态加密现有产品形态和工程实现◆ ◆参考链接◆ ◆备注(其他参考信息)◆ 同态 ...

  2. 用Python实现的数据结构与算法:堆栈

    一.概述 堆栈(Stack)是一种后进先出(LIFO)的线性数据结构,对堆栈的插入和删除操作都只能在栈顶(top)进行. 二.ADT 堆栈ADT(抽象数据类型)一般提供以下接口: Stack() 创建 ...

  3. POJ2186:Popular Cows(tarjan+缩点)

    题目解析: 这题题意没什么好说的,解法也挺简单的,只要会tarjan算法+只有一个出度为0的强连通分量题目有解这题就迎刃而解了. #include <iostream> #include ...

  4. mac3.0环境搭建

    export ANDROID_SDK_ROOT=/Users/sjxxpc/Documents/ADT/sdk export ANDROID_NDK_ROOT=/Users/sjxxpc/Docume ...

  5. cocos代码研究(21)Widget子类Text,TextAtlas,TextBMFont学习笔记

    理论基础 Text类又称ttf格式文本,可以用ttf文件或者系统自带字体,支持文字多,但是ttf文件格式体积大,渲染速度慢: TextBMFont类又称fnt格式文本,纹理创建,根据纹理上有的文字来显 ...

  6. Smarty 模板布局继承

    Smarty 模板继承 在覆盖父模板的{block}块以外的地方, 子模板不能定义任何内容.任何在{block}以外的 内容都会被自动忽略. 在子模板和父模板中的{block}内容,可以通过 appe ...

  7. OAuth 白话简明教程 4.刷新 Access Token

    转自:http://www.cftea.com/c/2016/11/6705.asp OAuth 白话简明教程 1.简述 OAuth 白话简明教程 2.授权码模式(Authorization Code ...

  8. 20145312《网络对抗》Exp4 恶意代码分析

    20145312<网络对抗>Exp4 恶意代码分析 问题回答 1.总结一下监控一个系统通常需要监控什么.用什么来监控. 监控一个系统通常需要监控这个系统的注册表,进程,开放端口,程序服务还 ...

  9. 2017-2018-1 JaWorld 团队作业--冲刺1

    2017-2018-1 JaWorld 团队作业--冲刺1(20162301) 一.小组分工: 由于小组成员在本周比较忙碌,所以考虑后本组的冲刺就按照每天加入不同的类来完成.我们根据类的难度大小来决定 ...

  10. 采用注解方式实现security

    采用注解方式使用security,首先我们需要用注解方式实现Spring MVC,新建一个Maven项目 本项目目录结构如下:  我们会发现在WEB-INF中没有web.xml文件,下面会介绍,采用j ...