<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ?python作為動態語言,開發效率相當高,但如我們所知,動態語言的執行效率往往是比較低的,請看下面簡單的測試過程: ### 一、 C語言實現100萬次打印: 代碼: ~~~ #include<stdio.h> #include <time.h> int main(int argc, char* argv[]) { unsigned long i = 1; unsigned long ulNum = 1000000; clock_t start, finish; double duration; start = clock(); while (ulNum != 0) { printf("\nThe ulNum is: %u ", i); ulNum--; i++; } finish = clock(); duration = (double)(finish - start) / CLOCKS_PER_SEC; printf( "\n Use Time: %f seconds\n", duration ); system("pause"); return 0; } ~~~ 測試: 可看出,執行了約489秒。 ![](https://box.kancloud.cn/2016-06-08_57579355b4c31.gif) ### 二、python實現100萬次打印: 代碼: ~~~ #!/usr/bin/env python # -*- coding: utf-8 -*- import time import os time_begin = time.clock() i = 1 ulNum = 1000000 while (ulNum != 0): print "The ulNum is: %u " % i ulNum -= 1 i += 1 print "Use time: %s" % (time.clock() - time_begin) os.system("pause") ~~~ 測試: 可看出,執行了約675秒。 ![](https://box.kancloud.cn/2016-06-08_57579355c93f5.gif) ### 三、性能問題解決方法: 通過上面的比較,可以看出,同樣一個算法,C和python執行所需要的時間相差180多秒,所以我們需要一個解決方法,使編程既有python般的開發效率,又有C般的執行效率,所以我們想到如果將python程序中消耗性能最大的語句用C來實現,將會比較好地解決此問題,當然,實現方法可能有多種,本文僅通過python調用dll的方法來實現,其他方法后續再分析。 思路如下: 1、將程序中循環部分用C實現,并封裝為一個dll; 2、在python中調用此dll來計算; 方案實現: 1、制作dll,使用VC可以很方便的制作一個dll出來,代碼如下,編譯一下就會生成一個test_dll.dll文件,注意編譯成Release版本。 ~~~ // test_dll.cpp : Defines the entry point for the DLL application. // #include "stdafx.h" #include <stdio.h> BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { return TRUE; } extern "C" _declspec(dllexport) void print_sum(unsigned long ulNum) { unsigned long i = 1; while (ulNum != 0) { printf("\nThe ulNum is: %u ", i); ulNum--; i++; } } ~~~ 2、使用python調用test_dll.dll文件,代碼如下: ~~~ import os import ctypes import time time_begin = time.clock() test_dll = ctypes.cdll.LoadLibrary('test_dll.dll') test_dll.print_sum(1000000) print "Use time: %s" % (time.clock() - time_begin) os.system("pause") ~~~ 3、測試一下這次的執行時間: 這次我們用了507秒,可以看出和C程序運行結果的差不多。 ![](https://box.kancloud.cn/2016-06-08_57579355e3d94.gif) ### 四、后記 通過pyhton調用dll文件僅是提高性能的一個辦法,如C和python混合編程等方法均可實現此目的,具體請見后續博文。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看