GVKun编程网logo

在Python中检测64位操作系统(Windows)

12

对于在Python中检测64位操作系统感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解Windows,并且为您提供关于64位操作系统与32位操作系统数据类型的字节数、c#–有没有理由GDI在

对于在Python中检测64位操作系统感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解Windows,并且为您提供关于64位操作系统与32位操作系统数据类型的字节数、c# – 有没有理由GDI在64位操作系统上会慢一些(或者它可能与Windows 7相关)、MSI安装程序,64位操作系统,写入 windows system32 inetsrv文件夹、MySQL学习4:Windows 64位操作系统下使用MySQL的宝贵知识。

本文目录一览:

在Python中检测64位操作系统(Windows)

在Python中检测64位操作系统(Windows)

有谁知道我会怎么做才能检测到Windows在Python下的版本。我需要知道这是为Program Files使用正确的文件夹的一种方式。

非常感谢

64位操作系统与32位操作系统数据类型的字节数

64位操作系统与32位操作系统数据类型的字节数

一)64位系统和32位有什么区别? 
 
1、64bit CPU拥有更大的寻址能力,最大支持到128GB内存(理论上达到2^64,但实际上根本用不到那么大的内存),而32bit只支持4G内存
 
2、64位CPU一次可提取64位数据,比32位提高了一倍,理论上性能会提升1倍。但这是建立在64bit操作系统,64bit软件的基础上的。
 
 
 
什么是64位处理器?
 
之所以叫做“64位处理器”,是因为电脑内部都是实行2进制运算,处理器(CPU)一次处理数据的能力也是2的倍数。8位处理器、16位处理器、32位处理器和64位处理器,其计数都是2的倍数。一次处理的数据越大,该电脑处理信息的能力越来越大;因此64位处理在先天就比32位处理器具有快速的能力。那为什么不用更高级的128位处理器呢?因为位数越高,处理器芯片的设计也就越复杂,目前的技术水平暂时无法制造这么复杂的芯片。
 
 
 
64位处理器之失
 
※硬件———缺乏驱动程序,很多现有硬件无法使用
 
※软件———操作系统不是问题,但是软件出现不兼容难题
 
 
 
64位处理器之得
 
※硬件———更快的执行速度,更大的内存管理
 
※软件———最新的尖端软件首先出现在64位平台
 
 
 
(二)数据类型对应字节数
 
程序运行平台
      不同的平台上对不同数据类型分配的字节数是不同的。
      个人对平台的理解是CPU+OS+Compiler,是因为: 
      1、64位机器也可以装32位系统(x64装XP); 
      2、32位机器上可以有16/32位的编译器(XP上有tc是16位的,其他常见的是32位的); 
      3、即使是32位的编译器也可以弄出64位的integer来(int64)。 
      以上这些是基于常见的wintel平台,加上我们可能很少机会接触的其它平台(其它的CPU和OS),所以个人认为所谓平台的概念是三者的组合。 
      虽然三者的长度可以不一样,但显然相互配合(即长度相等,32位的CPU+32位的OS+32位的Compiler)发挥的能量最大。 
      理论上来讲 我觉得数据类型的字节数应该是由CPU决定的,但是实际上主要由编译器决定(占多少位由编译器在编译期间说了算)。
 
常用数据类型对应字节数
  可用如sizeof(char),sizeof(char*)等得出
 
 32位编译器:
 
      char :1个字节
      char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)
      short int : 2个字节
      int:  4个字节
      unsigned int : 4个字节
      float:  4个字节
      double:   8个字节
      long:   4个字节
      long long:  8个字节
      unsigned long:  4个字节
 
  64位编译器:
 
      char :1个字节
      char*(即指针变量): 8个字节
      short int : 2个字节
      int:  4个字节
      unsigned int : 4个字节
      float:  4个字节
      double:   8个字节
      long:   8个字节
      long long:  8个字节
      unsigned long:  8个字节
 
所以:在32位系统和64位系统下只有指针类型和长整型字节数有所差别,其余全部相同
32   int  *     :4个字节    long    :4个字节
64   int  *     :8个字节    long    :8个字节

c# – 有没有理由GDI在64位操作系统上会慢一些(或者它可能与Windows 7相关)

c# – 有没有理由GDI在64位操作系统上会慢一些(或者它可能与Windows 7相关)

背景

我正在开发一个应用程序,它应该以相同的方式从XP开始在每个Windows平台上运行.通过.NET框架,这在很大程度上非常容易.该应用程序可以在各种触摸表面上运行.该应用程序的目标是.Net 3.0,但如果由于某种原因我应该转移到.Net 3.5,我可以这样做.我无法使用4.0.

该应用程序通过System.Drawing命名空间大量使用GDI.现在,我知道GDI要么根本不是硬件加速,要么只是在极少数的显卡中加速,所以我希望有一些性能问题.但是,这个问题很明显,使应用程序的可用性大大降低.如果可以通过简单的修复避免使用DirectX或OpenGL,我宁愿不重写整个应用程序.

问题

我们最近在其中一个触摸表上安装了Windows 7 64位.这是第一次在Windows 7 64位计算机上运行该应用程序.无论如何,一次在设备上使用多个手指的任何绘图(特别是DrawLine)会导致可笑的滞后量.这种滞后在32位Windows XP或32位Windows 7上并不明显,所以我认为它可能特定于64位Windows 7(我没有要测试的64位XP机器).

由于其中一个.dll文件只有32位库可用于编译,因此该应用程序也被强制作为32位应用程序运行.我在某处读到,在64位系统上强制进程进入32位模式可能会导致性能问题,但是当我升级SDK时我们使用并制作了64位特定的.dll和应用程序,问题仍然存在.

我读到on this other StackOverflow thread,与GDI相关的32位和64位应用程序之间应该没有区别.这似乎不是这种情况.

那么它归结为:你们中的任何人都知道为什么Windows 32位和Windows 64位之间可能会有如此巨大的性能差异吗?如果我找不到解决方案,我将不得不花一点时间让一切都使用硬件加速绘图.如果可能的话,我想避免这种情况.

感谢大家!

编辑:请求的代码段

public delegate void drawLineDelegate(Color color,float width,int x1,int y1,int x2,int y2);
    public void drawLine(Color color,int y2)
    {
        if (Invokerequired)
        {
            Invoke(new drawLineDelegate(drawLine),new object[] { color,width,x1,y1,x2,y2 });
        }
        else
        {
            try
            {
                lock (drawLock)
                {
                    pen.Width = width;
                    pen.Color = color;
                    scaledPen.Width = width * this.Width / Canvas.Width;
                    scaledPen.Color = color;
                    Point p1 = scalePointToScreen(new Point(x1,y1));
                    Point p2 = scalePointToScreen(new Point(x2,y2));

                    graphics.DrawLine(pen,y2);
                    scaledGraphics.DrawLine(scaledPen,p1.X,p1.Y,p2.X,p2.Y);

                    this.Invalidate(new Rectangle(Math.Min(p1.X,p2.X) - (int)scaledPen.Width,Math.Min(p1.Y,p2.Y) - (int)scaledPen.Width,Math.Abs(p2.X - p1.X) + 2 * (int)scaledPen.Width,Math.Abs(p2.Y - p1.Y) + 2 * (int)scaledPen.Width));
                }
            }
            catch (Exception ex)
            {
                if (Scribbler.Properties.Settings.Default.LogLevel >= 2)
                {
                    Scribbler.ScribblerForm.WriteLogMessage(ex.ToString());
                }
            }
        }

编辑:进一步研究
与我们在机器上使用的NVidia卡相比,我做了更多的互联网搜索.这导致我在NVidia开发者论坛上发表了几篇有关同一问题的人的帖子.常见的答案是GDI在Windows 7上被弃用,而较新的NVidia图形驱动程序(从182.5开始)遭受GDI性能问题.解决方案是更新到Direct3D或使用旧驱动程序.有谁知道这是否是最好的行动方案?

解决方法

我注意到你正在锁定你的绘图代码.你是从多个线程绘制的吗?我怀疑锁定可能与您的性能问题有关.

除非你完全知道自己在做什么,否则不应该从多个线程中绘制.操作系统中有太多关于多线程图形使用的问题.

因为你有一个Invoke,这是一个非常缓慢的过程.你不想一直调用.您永远不应该从后台线程调用此方法.看起来你的锁似乎并不是真的需要,因为你的调用会阻止除消息泵线程以外的任何线程访问.

我认为你将从重新设计你的绘画工作流程中受益匪浅,以确保它被调用一次,并且只能从主消息泵线程中调用.

我也有点困惑为什么你的绘图代码中的区域无效……这可能只是创建一个无限的绘制循环,这也可能是你的问题的一部分.

MSI安装程序,64位操作系统,写入 windows  system32  inetsrv文件夹

MSI安装程序,64位操作系统,写入 windows system32 inetsrv文件夹

在Windows Server 2008 64位上,我需要一个.msi安装程序文件将一些文件写入 windows system32 inetsrv文件夹。 (这些文件是一些XML Schemavalidation文件,C#XmlReaderSettings.Schema.Add()希望在该文件夹中)。

安装程序运行时,文件最终在 windows SysWOW64 inetsrv文件夹中,而不是它们需要的位置。

我试图让安装程序写入 windows Sysnative文件夹,然后安装程序创build了一个具有确切名称的文件夹,我没想到这是可能的。 看到这个页面有关抑制SysWOW64redirect的一个很好的讨论。

我应该如何让.msi将我的文件写入Windows 2008 64位的 windows system32 inetsrv文件夹中?

产生一个独立的孩子

在Windows任务pipe理器中更改进程优先级是否会导致问题?

如何判断Chef客户端是否安装在Linux上?

强制内存分配在64位Linux上从更高地址(> 4GB)分配

在Linux中的进程之间传输套接字

如何监控使用java的窗口进程?

Python:调用process.terminate()不会杀死它

在主机中,在Docker容器内运行的进程的PID是什么?

如何在Windows中保留进程ID

在进程之间传递消息

以下是您可以使用的系统文件夹属性 。 我知道这是反直觉,但你有没有尝试System64Folder ? 阅读评论。

如果这不起作用,请尝试将System32添加到WindowsFolder的末尾。

编辑1:尝试设置组件元素上的Win64属性 ,看看重定向行为是否改变。

我试图在wxs文件中使用Sysnative,但是我得到了相同的结果:在Windows下创建一个Sysnative文件夹,而不是使用System32。 所以我在一个vbscript CA中使用了Sysnative:找到了Windows文件夹(&H24&)并追加了 Sysnative。 这是有效的,但是在卸载期间需要第二个CA来删除文件。

我通过将文件写入 windows而不是 windows system32来解决我的问题。 事实证明,C#XmlReaderSettings.Schema.Add()将在 windows目录下使用完全限定的路径。 如果提供的路径不完全合格,它只是默认为system32文件夹。

这不是真正的问题的答案,但它是我的迫切需要的解决办法。

MySQL学习4:Windows 64位操作系统下使用MySQL

MySQL学习4:Windows 64位操作系统下使用MySQL

以下所有的步骤都是使用命令行方式完成操作MySQL服务的。 一启动/关闭MySQL (1)启动MySQL服务 net start mysql (2)停止MySQL服务 net stop mysql 二登录/退出MySQL 首先我们先来看看一些重要的mysql参数,下面表中列出了一些重要的mysql参数: (1)查看版本号

        以下所有的步骤都是使用命令行方式完成操作mysql服务的。

        一启动/关闭MySQL 

        (1)启动MySQL服务

        net start mysql


        (2)停止MySQL服务

        net stop mysql


        二登录/退出MySQL

        首先我们先来看看一些重要的mysql参数,下面表中列出了一些重要的mysql参数:


        (1)查看版本号

        输入mysql -V或mysql --version,注意这里的-V是大写。


        (2)登录MySQL

        mysql后面要加参数才行。格式是:mysql  -u root (用户)  -p -P 端口号  -h  mysql主机名\ip(本地机回送地址)。如

输入:mysql -u root -p -P 3306 -h 127.0.0.1,回车后输入密码登录;


       如果是命令行是mysql所在的本机,而且用默认的端口为3306,直接输入:mysql -u root -p,然后再输入密码。


        (3)MySQL退出

        输入下面的任何一种都有可以退出MySQL服务。

        mysql> exit; 

        mysql> quit;

        mysql> \q(注意这里是反斜线);

        在这里我三个全部尝试了,都可以退出MySQL服务,下面的截图是输入的:exit;


        三修改MySQL提示符

        先来看看我们经常使用的提示符:


        修改之前,先来看看默认MySQL提示符:


        (1)连接客户端时通过参数指定

        格式为:mysql -u root -p --prompt 提示符,例如我们输入:mysql -u root -p --prompt \h


        (2)连接上客户端后,通过prompt命令修改

        格式为:mysql>prompt 提示符,例如我们输入:mysql>prompt \u,然后再次输入:prompt \u@\h \d>


        我们先来使用命令进入一个数据库看看结果,输入:USE test;


        四MySQL常用命令

        (1)显示当前服务器版本

        SELECT VERSION();


        (2)显示当前日期时间

        SELECT NOW();

        (3)显示当前用户

        SELECT USER();


        五MySQL语句规范

        (1)关键字与函数名称全部大写(即使写成小写也是可以,但是为了区分,推荐关键字和函数名全部大写)。

        (2)数据库名称、表名称、字段名称全部小写。

        (3)SQL语句必须以分号结尾。



我们今天的关于在Python中检测64位操作系统Windows的分享已经告一段落,感谢您的关注,如果您想了解更多关于64位操作系统与32位操作系统数据类型的字节数、c# – 有没有理由GDI在64位操作系统上会慢一些(或者它可能与Windows 7相关)、MSI安装程序,64位操作系统,写入 windows system32 inetsrv文件夹、MySQL学习4:Windows 64位操作系统下使用MySQL的相关信息,请在本站查询。

本文标签: