前提・実現したいこと
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
あなたの回答
tips
プレビュー