質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

0回答

763閲覧

Windowsソフトウェアの顧客管理やGILロック、coloramaの改行されない問題について

KohnoseLami

総合スコア17

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2021/04/15 06:24

前提・実現したいこと

Windows向けに開発しているWindowsソフトウェアがあり、それらは複数のWebリソースを収集、またはそれらの情報を使用して情報の送信を行いレスポンスを確認するなどを全て自動化したソフトウェアを販売予定です。
その際に、デコンパイル対策やライセンス管理にPyArmorを使用しようと考えておりその際にHWIDなどでも顧客の管理を行いCrackなどの割れやパクられ対策を行いたいのですがPyArmor×自鯖にてHWID管理以外に良い最善策はありますか?

そして、そのソフトウェアでは速度が重要になるためthreadingモジュールを使用して並列で処理を行っています。
それらはネットワークI/Oのため一般的にはProcessingなどでは処理をするべきではないと思うのですがどうしてもGILロックでの制約が大きすぎて速度向上を行うことができません。
マルチプロセスではデータの共有、逐次書き換えなどが難しいため実装は考えておりません。
他にはノンブロッキングなどの改善策がありますがaiohttpなどを使用する必要があり、最初から作り直すコストを考えるととても行えません。
今のthreadingで使用している関数を変更せずにGILロックを回避する方法はありますか?

最後にcoloramaでinitを使用してcmd.exeやexeにした際に実行されても色付き文字を表示できるようにしているのですがこのinitを行うと文字の表示が遅くなるのかthreadingで逐次進行状況に色を付けて文字をprintすると改行が正常に行われずに連結されたりされるのですが改善策はありますか?
自らctypesなどで実装したら変わるのでしょうか?

ついでになのですがファイルに対して書き込みを行う際にthreadingで書き込みタイミングが被った場合?に正常に書き込みが行われない問題があります。逐次ファイルに書き込みを行う際に書き込まれないなどを防ぐ方法はありますか?
最後にリストを書き込む方法はリアルタイムに状況がファイルで確認できないため少し都合が悪いです。

以下のソースコードは実際の処理などをはぶいた簡易的な流れになります。

該当のソースコード

Python3

1def 並列処理(): 2 リクエストゲットやポストなどを含み結果によりファイルに逐次書き込み。 3 4for i in データ: 5 threading.Thread(target=並列処理, args=(i, ),).start()

補足情報(FW/ツールのバージョンなど)

from tenacity import retry, stop_after_attempt, retry_if_exception_type
from urllib3.exceptions import InsecureRequestWarning
from colorama import Fore, Back, Style
from fake_useragent import UserAgent
from bs4 import BeautifulSoup
from itertools import cycle
from colorama import init
import urllib.parse
import threading
import requests
import platform
import datetime
import urllib3
import random
import string
import ctypes
import glob
import time
import json
import re
import os

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問