多线程与多进程

多线程与多进程

多线程与进程

进程(Process)

是计算机中的程序关于某数据集合上的一次运动活动,是系统进行资源分配
和调度的基本单位,是操作系统结构的基础。

线程(Thread)

有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最
小单位。线程是进程中的一个实体,是被系统独立调度和分配的基本单位,
一个进程可以包含多个线程,但是线程不能包含多个进程。线程自己不拥有
系统资源,在单个程序中同时运行多个线程完成不同的工作,称为多线程。

线程与进程的区别

线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,
而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计算器
为其执行上下文。

单线程实战

from time import ctime,sleep

def talk():
    print("start talk :%r"%ctime())
    sleep(2)

def write():
    print("start write:%r"%ctime())
    sleep(3)

if __name__ == '__main__' :
    talk()
    write()
    print("All end !%r" %ctime())

多线程实战

# -*- coding: utf-8 -*-
from time import sleep,ctime
import threading

# 定义说和写
def talk(content,loop):
    for i in range(loop):
        print("start talk:%s %s"%(content,ctime()))
        sleep(2)

def write(content,loop):
    for i in range(loop):
        print("start write:%s %s"%(content,ctime()))
        sleep(3)
# 定义和加载说和写的线程
threads = []

t1 = threading.Thread(target=talk,args=("hello",2))
threads.append(t1)

t2 = threading.Thread(target=write,args=("人生苦短,我用python!",2))
threads.append(t2)
# 执行多线程
if __name__ == '__main__':
    for t in threads:
        t.start()
    for t in threads:
        t.join()
    print("线程全部执行完成!%s"%ctime())

多进程实战

# -*- coding: utf-8 -*-
from time import ctime,sleep
# 导入multiprocessing进程模块
import multiprocessing

# 定义两个方法 说和写
def talk(content,loop):
    for i in range(loop):
        print("Tlak: %s %s"%(content,ctime))
        sleep(2)


def write(content, loop):
    for i in range (loop):
        print ("write: %s %s" % (content, ctime))
        sleep (3)

# 定义两个进程
process = []
p1 = multiprocessing.Process(target=talk,args=("hello",2))
process.append(p1)

p2 = multiprocessing.Process(target=write,args=("人生苦短,我用python",2))
process.append(p2)

# 调用进程
if __name__ == "__main":
    for p in process:
        p.start()
    for p in process:
        p.join()
    print("调用进程结束 %s"%ctime())

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100699.html原文链接:https://javaforall.net

(0)
上一篇 2021年5月24日 上午9:00
下一篇 2021年5月24日 上午10:00


相关推荐

  • 垃圾图像分类 ResNet34 python

    垃圾图像分类 ResNet34 python数据下载链接 https pan baidu com s 1wr3h2Wc720u 百度网盘为您提供文件的网络备份 同步和分享服务 空间大 速度快 安全稳固 支持教育网加速 支持手机端 注册使用百度网盘即可享受免费存储空间 https pan baidu com s 1wr3h2Wc720u 提取码 mqic 为什么要进行垃圾分类 当废物处理不当 时 就会发生回收污染 就像回收带有油的比萨盒 堆肥 一样 或者当废物得到正确处理但未正确准备

    2026年3月17日
    3
  • Visual Studio 2010的WAP网站开发

    Visual Studio 2010的WAP网站开发关于 VisualStudio 的 WAP 网站开发 我归纳一下吧 来自官方网站的消息 VisualStudio 不支持对 WAP 网站的直接开发 可以使用早期版本的 VisualStudio 可以使用早期版本的 VisualStudio 如果要开发只能使用较低 VisualStudio 2008 的版本 网上关于 VISUALSTUDIO 的如何调试 经测试 可能与

    2026年3月16日
    2
  • C#数组

    C#数组数组是一个存储相同类型元素的固定大小的数据集合.数组是引用类型一、定义数组的声明:<数据类型>[]<数组名字>;例:int[]numbers;二、数组的赋值(

    2022年7月4日
    32
  • 安卓系统 第三方_第三方os

    安卓系统 第三方_第三方os安卓系统因其开源开放的特点,短短几年间就迅速占据了手机操作系统的大半的市场份额,Android平台提供给第三方开发商一个十分宽泛、自由的环境,不会受到各种条条框框的阻扰,因此也出现了许许多多的基于安卓

    2022年8月4日
    10
  • x86为什么不叫x32_华为鲲鹏cpu是x86架构吗

    x86为什么不叫x32_华为鲲鹏cpu是x86架构吗整理了下网上的资料,归类了下,大似表述是这样的:IBM/PC兼容机,也就是Intel的i80x86指令架构,就简称了x86。x86并不是指32位环境,而是指80×86架构,这个架构目前有32位,64位

    2022年8月1日
    7
  • Linux之bash介绍

    Linux之bash介绍Shell 的介绍 shell 是一个程序 可以称之为壳程序 用于用户与操作系统进行交互 用来区别与核 相当于是一个命令解析器 Shell 有很多中 这里列出其中几种 BourneSHell sh BourneAgainS bash CSHell csh KornSHell ksh zsh 各个 shell 的功能都差不太多 在某些语法的下达下面有些区别 Li

    2026年3月26日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号