python之Thread和multiprocessing

一.背景篇

        如何让计算机实现并发作业,提高运行效率是很重要的。但是通常我们提到并发都会想到线程,在同一个进程内创建多线程可以共享资源,同时创建线程的开销会小于创建进程。但是线程之间的竞争资源(锁)同步问题还是要消耗一些资源,并且多线程编程对很多程序员来说并不友好,毕竟大部分人的思维是串行的吧,冯诺依曼设计的计算机架构也是以顺序执行为基础的~

        重点是对于python而言,由于其使用了全局解释锁(GIL),所以python的多线程并不能实现并发。因此,python的并发是通过多进程来实现的!!!

        然后,很自然你就会思考了,进程之间不共享资源,实现通信就会麻烦一些咯,不过好在multiprocessing内提供了很多进程间通信的接口,包括管道pipe,队列queue等。

        对于更大型的项目,我们部署到多台服务器上运行的话,机器间通信会更麻烦一些,不过也有很多并行框架,很经典的celery之类的。而且远程主机间通信业有很多方式,比如使用消息队列实现通信的kafka~

二.实战代码篇

下面的每个例子虽然都只给了代码,但是代码我都做了非常非常详细的注释,相信我们都能从其中得到知识的提升!~

参考Python标准库10 多进程初步 (multiprocessing包)

1.multithread_面向过程

import threading
import time
import os
# a program to simulate selling tickets in multi-thread way
# u may realize that this is almost precedure-oriented programming
# for OOP(object-oriented programming), see'multhr_oop.py'

# this function can be any function to do other chores.
def doChore():
    #time.sleep(0.5)
    print 'hh, I am drinking water!'

# function for each thread
def booth(tid):
    # use keyword
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值