আমার অজগর শেলটি OSX এ 32 বিট বা 64 বিট মোডে নির্বাহ করছে কিনা তা আমি কীভাবে নির্ধারণ করব?


420

শেলের মধ্যে থেকে শেলটি কী মোডে রয়েছে তা বলার জন্য আমার একটি উপায় প্রয়োজন।

আমি প্ল্যাটফর্মের মডিউলটি দেখার চেষ্টা করেছি তবে কেবল "বিট আর্কিটেকচার এবং এক্সিকিউটেবলের জন্য ব্যবহৃত লিংকেজ ফর্ম্যাট" সম্পর্কে আপনাকে কেবল বলা হবে: বাইনারিটি 64 বিট হিসাবে সংকলিত হয়েছে (যদিও আমি ওএস এক্স 10.6 তে চলছি) তাই যদিও আমি এখানে 32 মেগাবাইট মোড জোর করতে বর্ণিত পদ্ধতিগুলি ব্যবহার করছি তা সর্বদা 64৪ বিটের প্রতিবেদন করে বলে মনে হয় )।


1
মাত্র আগ্রহের বাইরে: আপনার জানা দরকার কেন?
লেনার্ট রেজেব্রো

2
ওএস এক্স 10.6 এ কিছু মডিউল তৈরি এবং লোড করতে আমার সমস্যা হচ্ছে। বিশেষত পাইস্কো, যা অভিযোগ করছে যে আমি 64 বিট মোডে চলেছি। এটি একটি ভার্চুয়ালেনভের অধীনেও রয়েছে তাই আমার আরও কিছু জটিল
জটিলতাগুলিও পড়তে হবে যেগুলি

2
আমি জানতে চাই কারণ আমি যখন পাইআইনস্টলারের মতো কিছু ব্যবহার করে স্ট্যান্ড-একা বাইনারি বন্টনযোগ্য তৈরি করতে (ব্যবহারকারীদের কাছে দিতে যাঁরা পাইথন ইনস্টল না করতে পারেন তার সঠিক সংস্করণ), আমার উত্পন্ন বাইনারিটি 32/64 বিট নির্ভর করে পাইথনটিতে আমি পাইআইনস্টলারটি দিয়ে চালিত করি I আমি আদর্শভাবে ভাবছি যে আমি নিজেই পরিবর্তিত বাইনারি / আর্কাইভ ফাইলটির নাম '32 'বা' 64 'দিয়ে নিজেই ফাইলটির নাম রাখতে চাইছি, যেখানে আমি নিজে যেখানে ফাইলের নাম রেখেছি তার উপর নির্ভর করে 'মেক' কমান্ডটি কার্যকর করুন
জোনাথন হার্টলি

উত্তর:


412

একটি উপায় এখানেsys.maxsize ডকুমেন্টেড হিসাবে তাকান :

$ python-32 -c 'import sys;print("%x" % sys.maxsize, sys.maxsize > 2**32)'
('7fffffff', False)
$ python-64 -c 'import sys;print("%x" % sys.maxsize, sys.maxsize > 2**32)'
('7fffffffffffffff', True)

sys.maxsizeপাইথন ২.6-এ প্রবর্তিত হয়েছিল। যদি আপনার পুরানো সিস্টেমগুলির জন্য কোনও পরীক্ষা প্রয়োজন হয় তবে এই পাইথন 2 এবং 3 টি রিলিজের জন্য এই সামান্য জটিল পরীক্ষার কাজ করা উচিত:

$ python-32 -c 'import struct;print( 8 * struct.calcsize("P"))'
32
$ python-64 -c 'import struct;print( 8 * struct.calcsize("P"))'
64

বিটিডাব্লু, আপনি এটির জন্য ব্যবহার করতে প্ররোচিত হতে পারেন platform.architecture()। দুর্ভাগ্যক্রমে, এর ফলাফলগুলি সর্বদা নির্ভরযোগ্য নয়, বিশেষত ওএস এক্স সর্বজনীন বাইনারিগুলির ক্ষেত্রে

$ arch -x86_64 /usr/bin/python2.6 -c 'import sys,platform; print platform.architecture()[0], sys.maxsize > 2**32'
64bit True
$ arch -i386 /usr/bin/python2.6 -c 'import sys,platform; print platform.architecture()[0], sys.maxsize > 2**32'
64bit False

14
উইন্ডোজ চলাকালীন sys.maxint ব্যবহার 64-বিট পাইথন সনাক্ত করতে কাজ করবে না ( এখানে দেখুন )। পরিবর্তে, ক্রস-প্ল্যাটফর্ম সমাধানের জন্য স্ট্রাকটাক্যালসাইজ ("পি") ব্যবহার করুন।
লুক মুর

চেক করার জন্য ধন্যবাদ। আমি sys.maxsizeপাইথন ২.++ এর জন্য এখন নথিভুক্ত পরীক্ষা এবং মডিউল structদ্বারা ব্যবহৃত টেস্টটি platformপাইথন ২ এর পুরানো সংস্করণগুলির জন্যও কাজ করে দেখানোর জন্য উত্তরটি যথেষ্ট পরিমাণে সংশোধন করেছি
নেড ডিলি

এটি আয়রন পাইথনে কাজ করে না, 32 বিট এবং 64 বিট আয়রন পাইথন উভয়ের জন্য সিস.ম্যাক্সেসাইজ 2 ** 31 হয়
মেহ

4
ইয়িনন, এটি সত্য তবে প্রশ্নটি যা চেয়েছিল তা নয়। এবং, সেই সিপিইউগুলিতে যেখানে চালানো সম্ভব, বলুন, 32-বিট বা -৪-বিট বাইনারি হয়, মেশিনের খিলানটি সাধারণত পাইথন প্রোগ্রামের সাথে প্রাসঙ্গিক নয়; পাইথন দোভাষী নিজেই খিলান হিসাবে কী চলছে তা গুরুত্বপূর্ণ।
নেড ডিলি

6
উইন্ডোজ সেন্টিমিডিতে আপনাকে বাইরের ডাবল উক্তি এবং ভিতরে একক উদ্ধৃতি লাগাতে হবে অন্যথায় এটি একটি বাক্য গঠন ত্রুটি তৈরি করবে। এটি সম্ভবত কারণ উইন্ডোজ মনে করে যে একক-কোটের মধ্যে ফাঁকা স্থানগুলি এখনও আর্গুমেন্ট ডিলিমিটর are এই উত্তরটি সামঞ্জস্য করতে এই সত্যটি সামঞ্জস্য করতে সহায়ক হতে পারে।
স্টিভেন ব্লুয়েন

254

টার্মিনাল / কমান্ড লাইনে পাইথন ইন্টারপ্রেটারটি শুরু করার সময় আপনি একটি লাইন দেখতে পাবেন:

Python 2.7.2 (default, Jun 12 2011, 14:24:46) [MSC v.1500 64 bit (AMD64)] on win32

যেখানে [MSC v.1500 64 bit (AMD64)]64৪-বিট পাইথন। আমার নির্দিষ্ট সেটআপের জন্য কাজ করে।


6
তাহলে এই কি? Bit৪ বিট পাইথন বা 32 বিট অজগর?
পিএইচপিজেস

9
@ পিএফপিজেস এর জন্য বিট 64৪ বিট[MSC v.1500 64 bit (AMD64)]
এডুয়ার্ড ফ্লোরিইনসকু

19
দুর্ভাগ্যক্রমে শুধুমাত্র পাইথনের উইন্ডোজ সংস্করণগুলির জন্য কাজ করে। আমার ওএসএক্স ইনস্টলেশনটি প্রত্যাবর্তন করেছেPython 2.7.8 (v2.7.8:ee879c0ffa11, Jun 29, 2014, 21:07:35) [GCC 4.2.1 (Apple In. build 5666) (dot 3)] on darwin
এডজ

6
সাইগউইনে, আপনি এই উত্তরটি পেয়েছেন:Python 2.7.8 (default, Jul 25 2014, 14:04:36) [GCC 4.8.3] on cygwin
জোনো_এফটিডাব্লু

1
এই তথ্যটি ফোন করে কল করে খুঁজে পাওয়া যাবে sys.version। আমি উদাহরণস্বরূপ ('3.4.4 |Continuum Analytics, Inc.| (default, Feb 16 2016, 09:54:04) [MSC ' 'v.1600 64 bit (AMD64)]')2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)]
পেয়েছি

189

মূলত ম্যাথু মার্শালের উত্তরের একটি পরিবর্তন (স্ট্যান্ডার্ড লাইব্রেরির কাঠামো সহ):

import struct
print struct.calcsize("P") * 8

1
ইমো, সিটিপস সংস্করণের চেয়ে ভাল - এমনকি পুরানো পাইথনের সাথেও কাজ করে।
yk4ever

7
খুব দরকারী, এক লাইনে ব্যবহার করা যেতে পারে। $ পাইথন-সি 'আমদানি কাঠামো; struct.calcsize ( "পি") * 8 'প্রিন্ট
সূর্যের Liwen

1
মুদ্রণ (স্ট্রাকটাক্যালাক্সাইজ ("পি")) * 8) ভাল।
হ্যালো ওয়ার্ল্ড

2
পাইথন 3 এর জন্য অনুলিপি অনুলিপি করুন:python -c "import struct; print(struct.calcsize('P')*8)"
নিনস্টাইন

78

শূন্য পয়েন্টারের আকার পেতে সিটিপস ব্যবহার করে দেখুন:

import ctypes
print ctypes.sizeof(ctypes.c_voidp)

এটি 32 বিটের জন্য 4 বা 64 বিটের জন্য 8 হবে।


1
এটি কাজ করে, যদিও এটির অপ্রয়োজনীয় আমদানি এবং মডিউল লোডের সামান্য অসুবিধাও যদি আপনার অন্যথায় সিটিপসের প্রয়োজন না হয়: সিস মডিউল, ওটোহ, দোভাষীর মধ্যে সংকলিত হয়।
নেড ডিলি

দয়া করে আমাকে বুঝতে সহায়তা করুন: আমার b৪ বি ইনস্টলেশনটি 8python -c 'import ctypes; print ctypes.sizeof(ctypes.c_voidp)' ফেরত দেয় । নাকি হওয়া উচিত ? python -c 'import ctypes; print ctypes.sizeof(ctypes.c_voidp) * 8'
lukmdo

ফাংশনটি বাইটগুলিতে আকার দেয় (4 বা 8)। আপনি মাপ প্রয়োজন বিট (32 বা 64) আপনি 8. b_is_python_64bit = (ctypes.sizeof (ctypes.c_voidp) == 8) সঙ্গে সংখ্যাবৃদ্ধি
phobie

1
python -c "import ctypes; print(32 if ctypes.sizeof(ctypes.c_voidp)==4 else 64, 'bit CPU')"
সবেমাত্র

54

পাইথন কনসোল খুলুন:

import platform
platform.architecture()[0]

এটি আপনার প্ল্যাটফর্ম অনুসারে '64 বিট' বা '32 বিট' প্রদর্শন করবে।

বিকল্পভাবে ( ওএস এক্স বাইনারি ক্ষেত্রে ):

import sys
sys.maxsize > 2**32 
# it should display True in case of 64bit and False in case of 32bit

প্যাটফর্ম মডিউলটি সর্বদা নির্ভরযোগ্য নয় ডকসগুলি দেখুন ডকস.সিথথন.আর / 2 / লিবারি / প্ল্যাটফর্ম এইচটিএমএল এটি কিছু উইন্ডোজ অ্যাপ্লিকেশনটির জন্যও সত্য
জিএম

18

অ-প্রোগ্রাম্যাটিক সমাধানের জন্য, ক্রিয়াকলাপ মনিটরে সন্ধান করুন। এটি Inte৪-বিট প্রক্রিয়াগুলির আর্কিটেকচারকে "ইন্টেল (-৪-বিট)" হিসাবে তালিকাভুক্ত করে।


1
আমরা যারা ম্যাক ওএস 10.xx ব্যবহার করছি তাদের জন্য একটি খুব সুন্দর বিকল্প উত্তর আপনাকে ধন্যবাদ!
mkelley33

16

আমার সেন্টোস লিনাক্স সিস্টেমে আমি নিম্নলিখিতগুলি করেছি:

1) পাইথন ইন্টারপ্রেটার শুরু করেছি (আমি 2.6.6 ব্যবহার করছি)
2) নিম্নলিখিত কোডটি রান করুন:

import platform
print(platform.architecture())

এবং এটা আমাকে দিয়েছে

(64bit, 'ELF')

এই সমাধানটি ওপি কর্তৃক তাঁর পক্ষে অ-কার্যকারী হিসাবে বর্ণনা করা হয়নি?
অ্যান্টনি হ্যাচকিন্স

এটি হতে পারে, তবে এটি আমার যা প্রয়োজন তা অবিকল; একটি "ভুল উত্তর" +1 করার জন্য দুঃখিত, তবে আমার এটির খারাপভাবে প্রয়োজন।
আনসেটল্টিংট্রেন্ড

এই সমাধানটি সোলারিস ১১ এর জন্য উপযুক্ত
স্টিভেন ওল্ফ

11

platform.architecture() নোটগুলি বলে:

দ্রষ্টব্য: ম্যাক ওএস এক্সে (এবং সম্ভবত অন্যান্য প্ল্যাটফর্মগুলি) এক্সিকিউটেবল ফাইলগুলি একাধিক আর্কিটেকচারযুক্ত সর্বজনীন ফাইল হতে পারে।

বর্তমান দোভাষীর "-৪-সাক্ষ্য" পেতে, sys.maxsize বৈশিষ্ট্যটি জিজ্ঞাসা করা আরও নির্ভরযোগ্য:

import sys
is_64bits = sys.maxsize > 2**32

11

সমস্ত কিছু গোষ্ঠীভুক্ত করা হচ্ছে ...

এটি বিবেচনা করে:

  • ওএসএক্সের জন্য প্রশ্ন জিজ্ঞাসা করা হয়েছে (আমার একটি প্রাচীন পাইথন সংস্করণ সহ একটি পুরাতন (এবং ফাটল) ভিএম রয়েছে )
  • আমার প্রধান vর্ষা উইন
  • আমি শুধু আছে 32bit সংস্করণ ইনস্টল উইন (এবং আমি একটি "বিকলাঙ্গ" এক নির্মিত Lnx )

আমি পাইথন 3 এবং পাইথন 2 ব্যবহার করে সমস্ত 3 প্ল্যাটফর্মে উদাহরণ দিয়ে যাচ্ছি ।

  1. [পাইথন ৩. ডকস]: পরীক্ষা করুন s সর্বাধিক মান - এর সাথে তুলনা করুন 0x100000000( 2 ** 32): 64 বিটের জন্য বৃহত্তর , 32 বিটের জন্য ছোট :
    • ওএসএক্স 9 x64 :
      • পাইথন 2.7.10 x64 :
        >>> import sys
        >>> "Python {0:s} on {1:s}".format(sys.version, sys.platform)
        'Python 2.7.10 (default, Oct 14 2015, 05:51:29) \n[GCC 4.8.2] on darwin'
        >>> hex(sys.maxsize), sys.maxsize > 0x100000000
        ('0x7fffffffffffffff', True)
    • উবুন্টু 16 x64 :
      • পাইথন 3.5.2 x64 :
        >>> import sys
        >>> "Python {0:s} on {1:s}".format(sys.version, sys.platform)
        'Python 3.5.2 (default, Nov 23 2017, 16:37:01) \n[GCC 5.4.0 20160609] on linux'
        >>> hex(sys.maxsize), sys.maxsize > 0x100000000
        ('0x7fffffffffffffff', True)
      • পাইথন 3.6.4 x86 :
        >>> import sys
        >>> "Python {0:s} on {1:s}".format(sys.version, sys.platform)
        'Python 3.6.4 (default, Apr 25 2018, 23:55:56) \n[GCC 5.4.0 20160609] on linux'
        >>> hex(sys.maxsize), sys.maxsize > 0x100000000
        ('0x7fffffff', False)
    • জয় 10 x64 :
      • পাইথন 3.5.4 x64 :
        >>> import sys
        >>> "Python {0:s} on {1:s}".format(sys.version, sys.platform)
        'Python 3.5.4 (v3.5.4:3f56838, Aug  8 2017, 02:17:05) [MSC v.1900 64 bit (AMD64)] on win32'
        >>> hex(sys.maxsize), sys.maxsize > 0x100000000
        ('0x7fffffffffffffff', True)
      • পাইথন 3.6.2 x86 :
        >>> import sys
        >>> "Python {0:s} on {1:s}".format(sys.version, sys.platform)
        'Python 3.6.2 (v3.6.2:5fd33b5, Jul  8 2017, 04:14:34) [MSC v.1900 32 bit (Intel)] on win32'
        >>> hex(sys.maxsize), sys.maxsize > 0x100000000
        ('0x7fffffff', False)


  1. [পাইথন ৩. ডকস]: স্ট্রাক্ট ব্যবহার করুন (পয়েন্টার) ফর্ম্যাট দ্বারা উত্পাদিত বস্তুর আকার নির্ধারণ করতে ক্যালসাইজ ( ফর্ম্যাট ) করুন । অন্য কথায়, পয়েন্টার আকার নির্ধারণ করে ( sizeof(void*)):
    • ওএসএক্স 9 x64 :
      • পাইথন 2.7.10 x64 :
        >>> import struct
        >>> struct.calcsize("P") * 8
        64
    • উবুন্টু 16 x64 :
      • পাইথন 3.5.2 x64 :
        >>> import struct
        >>> struct.calcsize("P") * 8
        64
      • পাইথন 3.6.4 x86 :
        >>> import struct
        >>> struct.calcsize("P") * 8
        32
    • জয় 10 x64 :
      • পাইথন 3.5.4 x64 :
        >>> import struct
        >>> struct.calcsize("P") * 8
        64
      • পাইথন 3.6.2 x86 :
        >>> import struct
        >>> struct.calcsize("P") * 8
        32


  1. [পাইথন ৩. ডকস] ব্যবহার করুন : সিটিপস - পাইথনের জন্য একটি বিদেশী ফাংশন লাইব্রেরি । এটি পয়েন্টারের আকার নির্ধারণ করতেও নীচে ফোটে ( sizeof(void*))। একটি নোট হিসাবে, সিটিপস # 2 ব্যবহার করে (অগত্যা এই কাজের জন্য নয়) "$ {পিওয়াইথনএসআরসি_ডিআইআর Lib / লিবি / সিটিপস / __ init__.py" ( লাইন # 15 এর আশেপাশে ) এর মাধ্যমে:
    • ওএসএক্স 9 x64 :
      • পাইথন 2.7.10 x64 :
        >>> import ctypes
        >>> ctypes.sizeof(ctypes.c_void_p) * 8
        64
    • উবুন্টু 16 x64 :
      • পাইথন 3.5.2 x64 :
        >>> import ctypes
        >>> ctypes.sizeof(ctypes.c_void_p) * 8
        64
      • পাইথন 3.6.4 x86 :
        >>> import ctypes
        >>> ctypes.sizeof(ctypes.c_void_p) * 8
        32
    • জয় 10 x64 :
      • পাইথন 3.5.4 x64 :
        >>> import ctypes
        >>> ctypes.sizeof(ctypes.c_void_p) * 8
        64
      • পাইথন 3.6.2 x86 :
        >>> import ctypes
        >>> ctypes.sizeof(ctypes.c_void_p) * 8
        32


  1. [পাইথন ৩. ডকস]: প্ল্যাটফর্ম। আর্কিটেকচার ( এক্সিকিউটেবল = sys.executable, বিট = '', লিঙ্কেজ = '' ) !!! উপর নির্ভরযোগ্য নয় ওএসএক্স !!! মাল্টি আর্চ এক্সিকিউটেবল (বা .dlib ) ফর্ম্যাটের কারণে (কিছু ক্ষেত্রে, # 2 ব্যবহার করে ):
    • ওএসএক্স 9 x64 :
      • পাইথন 2.7.10 x64 :
        >>> import platform
        >>> platform.architecture()
        ('64bit', '')
    • উবুন্টু 16 x64 :
      • পাইথন 3.5.2 x64 :
        >>> import platform
        >>> platform.architecture()
        ('64bit', 'ELF')
      • পাইথন 3.6.4 x86 :
        >>> import platform
        >>> platform.architecture()
        ('32bit', 'ELF')
    • জয় 10 x64 :
      • পাইথন 3.5.4 x64 :
        >>> import platform
        >>> platform.architecture()
        ('64bit', 'WindowsPE')
      • পাইথন 3.6.2 x86 :
        >>> import platform
        >>> platform.architecture()
        ('32bit', 'WindowsPE')


  1. খোঁড়া workaround ( getarie ) - [পাইথন ৩. ডকস]: ওএস এর মাধ্যমে একটি বাহ্যিক আদেশ ( [man7]: ফাইল (1) ) আহ্বান করুন। সিস্টেম ( কমান্ড )# 4 এর সীমাবদ্ধতা প্রয়োগ করুন (কখনও কখনও এটি এমনকি কাজ নাও করতে পারে):
    • ওএসএক্স 9 x64 :
      • পাইথন 2.7.10 x64 :
        >>> import os
        >>> os.system("file {0:s}".format(os.path.realpath(sys.executable)))
        /opt/OPSWbuildtools/2.0.6/bin/python2.7.global: Mach-O 64-bit executable x86_64
    • উবুন্টু 16 x64 :
      • পাইথন 3.5.2 x64 :
        >>> import os
        >>> os.system("file {0:s}".format(os.path.realpath(sys.executable)))
        /usr/bin/python3.5: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=59a8ef36ca241df24686952480966d7bc0d7c6ea, stripped
      • পাইথন 3.6.4 x86 :
        >>> import os
        >>> os.system("file {0:s}".format(os.path.realpath(sys.executable)))
        /home/cfati/Work/Dev/Python-3.6.4/python: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=5c3d4eeadbd13cd91445d08f90722767b0747de2, not stripped
    • জয় 10 x64 :
      • ফাইল ইউটিলিটি উপস্থিত নেই, অন্যান্য 3 ডি পার্টির সরঞ্জাম রয়েছে যা ব্যবহার করা যেতে পারে তবে আমি সেগুলিতে জোর দিচ্ছি না


বিজয় নির্দিষ্ট:

  1. [পাইথন ৩. ডকস]: ওএস এর মাধ্যমে এনভ ভার্স (উদাহরণস্বরূপ % প্রোসেসর_মার্চচার% (বা অন্যান্য)) পরীক্ষা করুন পরিবেশ :
    • জয় 10 x64 :
      • পাইথন 3.5.4 x64 :
        >>> import os
        >>> os.environ["PROCESSOR_ARCHITECTURE"]
        'AMD64'
      • পাইথন 3.6.2 x86 :
        >>> import os
        >>> os.environ["PROCESSOR_ARCHITECTURE"]
        'x86'


  1. [পাইথন ৩. ডকস]: এস। সংস্করণ ( দোভাষী শুরু করার সময় 1 লাইনে প্রদর্শিতও হবে )
    • # 1 পরীক্ষা করুন

7

struct.calcsize("P")একটি একক পয়েন্টার সঞ্চয় করতে প্রয়োজনীয় বাইটগুলির আকার দেয়। একটি 32-বিট সিস্টেমে, এটি 4 বাইট ফিরে আসবে। একটি 64-বিট সিস্টেমে এটি 8 বাইট ফিরে আসবে।

সুতরাং 32আপনি যদি 32-বিট অজগর 64চালাচ্ছেন এবং আপনি যদি 64-বিট অজগর চালাচ্ছেন তবে নিম্নলিখিতটি ফিরে আসবে :

পাইথন 2

import struct;print struct.calcsize("P") * 8

পাইথন ঘ

import struct;print(struct.calcsize("P") * 8)

5

একটি কি python -VVকমান্ড লাইনে। এটি সংস্করণটি ফেরত দেওয়া উচিত।


পাইথনের মধ্যে এটি কীভাবে করা যায় তা দেখানো হচ্ছে না।
পার্কারড

এটি প্রশ্নের উত্তর দেওয়ার জন্য প্রয়োজনীয় তথ্য সরবরাহ করে বলে মনে হচ্ছে না
দিমিত্রি জাইতসেভ

4
C:\Users\xyz>python

Python 2.7.6 (default, Nov XY ..., 19:24:24) **[MSC v.1500 64 bit (AMD64)] on win
32**
Type "help", "copyright", "credits" or "license" for more information.
>>>

সেন্টিমিটারে অজগরকে আঘাত করার পরে


4
import sys
print(sys.version)

3.5.1 (v3.5.1: 37a07cee5969, ডিসেম্বর 6 2015, 01:54:25) [এমএসসি v.1900 64 বিট (এএমডি 64) ]


ওএসএক্স-এ প্রযোজ্য নয় ।
ক্রিসটিফতি



1

প্ল্যাটফর্ম আর্কিটেকচার নির্ভরযোগ্য উপায় নয়। পরিবর্তে আমাদের:

$ arch -i386 /usr/local/bin/python2.7
Python 2.7.9 (v2.7.9:648dcafa7e5f, Dec 10 2014, 10:10:46)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform, sys
>>> platform.architecture(), sys.maxsize
(('64bit', ''), 2147483647)
>>> ^D
$ arch -x86_64 /usr/local/bin/python2.7
Python 2.7.9 (v2.7.9:648dcafa7e5f, Dec 10 2014, 10:10:46)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform, sys
>>> platform.architecture(), sys.maxsize
(('64bit', ''), 9223372036854775807)

0

platform.architecture() সমস্যাযুক্ত (এবং ব্যয়বহুল)।

sys.maxsize > 2**32পাই 2 .6 থেকে সুবিধার্থে পরীক্ষা করুন ।

এটি প্রকৃত (ডিফল্ট) পয়েন্টার আকারের জন্য নির্ভরযোগ্য পরীক্ষা এবং কমপক্ষে পাই 2.3: থেকে সামঞ্জস্যপূর্ণ struct.calcsize('P') == 8। এছাড়াও: ctypes.sizeof(ctypes.c_void_p) == 8

নোটস: জিসিসি বিকল্প -mx32বা এর সাথে বিল্ডগুলি থাকতে পারে যা 64৪ বিট আর্কিটেকচার অ্যাপ্লিকেশন, তবে ডিফল্ট হিসাবে 32 বিট পয়েন্টার ব্যবহার করে (মেমরি এবং গতি সঞ্চয় করে)। 'sys.maxsize = ssize_t' সি পয়েন্টার আকারের (সাধারণত এটি 2**31 - 1যাইহোক) কঠোরভাবে উপস্থাপন করতে পারে না । এবং এমন সিস্টেমগুলি / কোডগুলি রয়েছে যা কোড এবং ডেটার জন্য বিভিন্ন পয়েন্টার মাপযুক্ত এবং এটি "32 বিবিট বা 64 বিট মোড" চিহ্নিত করার উদ্দেশ্যটি ঠিক কী তা পরিষ্কার করা দরকার?

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.