Pythonではメソッドを定義すると直接呼び出すことができますが、それを呼び出すためのスレッドを作成すると失敗する可能性があります。この現象は、システム操作に COM オブジェクトを使用する場合によく発生し、スレッドの形式で呼び出されます。
例外プロンプトは次のとおりです:
syntax error。WMI returned a syntax error: you're probably running inside a thread without first calling pythoncom.CoInitialize[Ex] (no underlying exception)
よく観察すると、例外プロンプトに解決策が示されています。スレッドを実行するときは、pythoncom.CoInitialize() メソッドを呼び出す必要があります。プログラムで WMI モジュールを使用して、システム情報を取得しようとしました。
例外の原因(推定)はcomの仕組みの問題です。 COM メカニズムを使用すると、2 つのコンポーネントがどのような種類のコンピュータで実行されているか、どのようなオペレーティング システムで実行されているか、コンポーネントがどのような言語でコンパイルされているかを気にすることなく相互に通信できるため、COM テクノロジに強い生命力。 COM 環境を初期化する目的は、COM を呼び出す API を適切に動作させること、つまり、COM 操作の前に CoInitialize または CoInitializeEX を呼び出すことです。したがって、スレッド関数で com オブジェクトを使用する場合は、CoInitialize または CoInitializeEX を呼び出す必要があります。 、終了時に CoUninitialize を使用してオブジェクトを解放します。
ケース:
c === send = 0.0 t += float(t.BytesReceivedPersec) / 1024 / 1024+= float(t.BytesSentPersec) / 1024 / 1024 rec, send
このコードは、コンピューターのネットワーク カードに基づいて、アップストリーム トラフィックとダウンストリーム トラフィック (つまり、送信トラフィックと受信トラフィック) を取得します。ただし、tornado の RequestHandler の get メソッドまたは post メソッドで使用すると、例外構文エラーと関連するプロンプトがスローされます。 RequestHandler では、post または get リクエストはバックグラウンド スレッド メソッドと見なされるため、WMI com コンポーネントをインスタンス化する前に com をインスタンス化する必要があります。
RequestHandler の post または get リクエストがバックグラウンド スレッド メソッドとみなされるのはなぜですか?この問題は、tornado を使用したコードから確認できます。コードは次のとおりです。
if __name__ == '__main__': app = tornado.web.Application( handlers=[(r"/test/(\w+)", testHandler), (r'/', MainHandler)] ) server = tornado.httpserver.HTTPServer(app) server = server.listen(8848) tornado.ioloop.IOLoop.instance().start();
tornado のルーティング ルールを構成した後、httpserver サービスを開始し、最後に tornado を実行するプロセスを作成しました。各 post または get リクエストは、ルーティングを通じて対応するハンドラーを呼び出し、スレッド内で実行されます。したがって、この場合、システム トラフィックが com コンポーネント WMI を通じて取得され、get メソッドに配置されると、エラーが報告されます。変更は次のとおりです:
def get(self): res = {} pythoncom.CoInitialize() c = wmi.WMI() interfaces = c.Win32_PerfRawData_Tcpip_NetworkInterface() print len(interfaces) rec = send = 0.0 for t in interfaces: print t.Name rec += float(t.BytesReceivedPersec) / 1024 / 1024 send += float(t.BytesSentPersec) / 1024 / 1024 print rec, send res["receive"] = "%.2f" % rec res["send"] = "%.2f" % send self._write_json(res)
モジュールには多くの型があり (型には多くの属性もあります)、特定の使用プロセス中にクエリを実行するのは非常に面倒です。この場合の統計トラフィックは Win32_PerfRawData_Tcpip_NetworkInterface を使用し、一部のソリューションでは Win32_PerfRawData_Tcpip_TCPv4 を使用します。これら 2 つの統計は実際の状況に応じて選択してください。
以上がPythonのメソッドがスレッド内で使用できない問題の解決方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Pythonの柔軟性は、マルチパラダイムサポートと動的タイプシステムに反映されていますが、使いやすさはシンプルな構文とリッチ標準ライブラリに由来しています。 1。柔軟性:オブジェクト指向、機能的および手続き的プログラミングをサポートし、動的タイプシステムは開発効率を向上させます。 2。使いやすさ:文法は自然言語に近く、標準的なライブラリは幅広い機能をカバーし、開発プロセスを簡素化します。

Pythonは、初心者から上級開発者までのすべてのニーズに適した、そのシンプルさとパワーに非常に好まれています。その汎用性は、次のことに反映されています。1)学習と使用が簡単、シンプルな構文。 2)Numpy、Pandasなどの豊富なライブラリとフレームワーク。 3)さまざまなオペレーティングシステムで実行できるクロスプラットフォームサポート。 4)作業効率を向上させるためのスクリプトおよび自動化タスクに適しています。

はい、1日2時間でPythonを学びます。 1.合理的な学習計画を作成します。2。適切な学習リソースを選択します。3。実践を通じて学んだ知識を統合します。これらの手順は、短時間でPythonをマスターするのに役立ちます。

Pythonは迅速な開発とデータ処理に適していますが、Cは高性能および基礎となる制御に適しています。 1)Pythonは、簡潔な構文を備えた使いやすく、データサイエンスやWeb開発に適しています。 2)Cは高性能で正確な制御を持ち、ゲームやシステムのプログラミングでよく使用されます。

Pythonを学ぶのに必要な時間は、人によって異なり、主に以前のプログラミングの経験、学習の動機付け、学習リソースと方法、学習リズムの影響を受けます。現実的な学習目標を設定し、実用的なプロジェクトを通じて最善を尽くします。

Pythonは、自動化、スクリプト、およびタスク管理に優れています。 1)自動化:OSやShutilなどの標準ライブラリを介してファイルバックアップが実現されます。 2)スクリプトの書き込み:Psutilライブラリを使用してシステムリソースを監視します。 3)タスク管理:スケジュールライブラリを使用してタスクをスケジュールします。 Pythonの使いやすさと豊富なライブラリサポートにより、これらの分野で優先ツールになります。

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SublimeText3 中国語版
中国語版、とても使いやすい

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)
