zoukankan      html  css  js  c++  java
  • 进程和线程—Python多线程编程

    进程和线程

    进程

    进程是一个执行中的程序。每个进程都拥有自己的地址空间、内存、数据栈以及其它用于跟踪执行的辅助数据。

    • 一个程序运行就是一个进程(比如 QQ、微信或者其它软件);

    • 进程可以通过派生新的进程来执行其它任务(比如在同一个电脑上登录两个 QQ);

    • 每个进程都有自己独立的数据,只能通过进程间通信(IPC)的方式共享信息。

    线程

    线程(有时候称为轻量级进程)与进程类似,不过它们是在同一个进程下执行的,并共享相同的上下文。可以将他们认为是在一个主进程或者“主线程”中并行运行的一些“迷你进程”。

    • 线程包括开始、执行顺序和结束三部分;

    • 当其它线程运行时,它可以被抢占(中断)和临时挂起(也称为睡眠)——这种做法叫做让步;

    • 一个进程中的各个线程与主线程共享同一片数据空间;

    • 线程一般是以并发方式执行的;(在单核 CPU 系统中不是真正的并发,是每个线程运行一小会儿再让出给其它线程运行,连续快速的切换,所以看起来像是并发);

    • 如果两个或多个线程访问同一片数据,由于访问顺序不一致可能导致结果不一致。——这种情况称为「竞态条件」(大多数线程库有一些同步原语注释,允许线程管理器控制执行和访问)

      [注释]  常见的比如锁(Lock)、可重入锁(RLock)
    • 线程无法给予公平的执行时间。一些函数会在完成前保持阻塞状态,如果没有专门为多线程情况进行修改,会导致 CPU 的时间分配向这些贪婪的函数倾斜。

  • 相关阅读:
    HDU 5818 Joint Stacks
    HDU 5816 Hearthstone
    HDU 5812 Distance
    HDU 5807 Keep In Touch
    HDU 5798 Stabilization
    HDU 5543 Pick The Sticks
    Light OJ 1393 Crazy Calendar (尼姆博弈)
    NEFU 2016省赛演练一 I题 (模拟题)
    NEFU 2016省赛演练一 F题 (高精度加法)
    NEFU 2016省赛演练一 B题(递推)
  • 原文地址:https://www.cnblogs.com/tester-xt/p/9387912.html
Copyright © 2011-2022 走看看