python多线程,多进程
线程是公用内存,进程内存相互独立
python多线程只能是一个cpu,java可以将多个线程平均分配到其他cpu上
以核为单位,所以GIL(全局锁,保证线程安全,数据被安全读取)最小只能控制一个核,很多人说python是假并发,因为一个核只能跑一个线程,后来有了多进程,可以利用多个cpu处理,但是缺点是耗费资源(因为开启一个进程就会开辟一个内存空间);进程相互通信。
调用方法使用多线程
一、多线程并发:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import threading
import time
def run(num):
print 'Hi,I am the thread',num
time.sleep(1)
for i in range(20):
t = threading.Thread(target=run,args=(i,))
t.start()
同一时间运行run函数20次
二、多线程,每个线程都不会再同一时间运行
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import threading
import time
def run(num):
print 'Hi,I am the thread',num
time.sleep(1)
for i in range(20):
t = threading.Thread(target=run,args=(i,))
t.start()
t.join() #每个线程关系都比较紧密,执行完一个线程在执行下一个,所以会有等待时间
继承方法使用多线程多并发
import threading
import time
class MyThread(threading.Thread):
def __init__(self,name):
threading.Thread.__init__(self)
self.name = name
def run(self):
print 'Hi,i am thread',self.name
time.sleep(2)
for i in range(10):
t = MyThread(i)
t.start()
python多线程,多进程的更多相关文章
- Python多线程多进程那些事儿看这篇就够了~~
自己以前也写过多线程,发现都是零零碎碎,这篇写写详细点,填一下GIL和Python多线程多进程的坑~ 总结下GIL的坑和python多线程多进程分别应用场景(IO密集.计算密集)以及具体实现的代码模块 ...
- Python多线程多进程
一.线程&进程 对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程, ...
- python学习笔记(十六)-Python多线程多进程
一.线程&进程 对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程, ...
- python多线程/多进程
thread和threading的区别 threading相对与thread是更高级别的线程管理模块 thread和threading模块中的一些属性会有冲突 thread模块拥有的同步原因实际上只有 ...
- 多线程&多进程解析:Python、os、sys、Queue、multiprocessing、threading
当涉及到操作系统的时候,免不了要使用os模块,有时还要用到sys模块. 设计到并行程序,一般开单独的进程,而不是线程,原因是python解释器的全局解释器锁GIL(global interpreter ...
- Python多线程和多进程谁更快?
python多进程和多线程谁更快 python3.6 threading和multiprocessing 四核+三星250G-850-SSD 自从用多进程和多线程进行编程,一致没搞懂到底谁更快.网上很 ...
- 搞定python多线程和多进程
1 概念梳理: 1.1 线程 1.1.1 什么是线程 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发 ...
- python多线程、多进程以及GIL
多线程 使用threading模块创建线程 传入一个函数 这种方式是最基本的,即调用threading中的Thread类的构造函数,然后指定参数target=func,再使用返回的Thread的实例调 ...
- python多线程和多进程
1 概念梳理: 1.1 线程 1.1.1 什么是线程 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发 ...
随机推荐
- 关于mongodb的一些笔记
1.以服务的形式安装mongodb dos -- 进入到mongodb的bin目录下,执行 D:\mongodb\bin>mongod --logpath D:\mongodb\logs\mon ...
- VS中,如何将存在于解决方案里,但是没有显示出来的文件(或文件夹)显示到项目中。
不知道有没有人跟我一样,刚开始接触VS的时候,没有通过"右键->添加"产生文件,而是直接一些文件或者文件夹建在了项目的本地目录中. 导致最后这些文件(或文件夹)无法在项目中显 ...
- xcode配色方案 (自己常用的)
https://github.com/ArtSabintsev/Solarized-Dark-for-Xcode
- 用SqlBulkCopy批量插入数据到SqlServer数据库表中
首先创建一个数据库连接类:SQLHelper using System; using System.Collections.Generic; using System.Linq; using Syst ...
- Maven项目下WEB-INFO目录下没有编译的classes文件
建立mavan项目之后,在项目目录中没有发现编译的classes文件夹 解决办法: 因为maven是默认将编译后的classes文件存入项目下的target文件夹中,所以我们需要修改编译后存放的路径, ...
- centos7下安装JDK 1.7
选则64位的rpm包下载:jdk-7u25-linux-x64.rpmrpm –ivh 'jdk安装包路径' 环境变量配置 # exportJAVA_HOME=<jdk-install-dir& ...
- Devstack single node Installation on VM
Last three days, I want to install devstack on my virtual machine on Vmware Workstation.The VM'syste ...
- sql 关于dblink和多条update、insert事务回滚写法
在存储过程的编写中难免会遇到调用同库他人的proc和跨库调用proc,还有一个proc中有多条对多表进行写入和修改的语句.那么就会用到tran. 如果我们在不写try的情况下就要对每个insert,u ...
- [code3119]高精度练习之大整数开根
试题描述 给出一个正整数n,求n开根号后的整数部分的值.n的位数不超过1000位. 输入 读入一个不超过1000位的正整数n. 输出 输出所求答案 输入示例 17 输出示例 4 高精度开根:需要 ...
- c#委托与事件(详解)
引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去 ...