2023年12月8日金曜日

Python制約プロセスとポストプロセスとの情報交換

 Pythonでの制約プロセスと、ポスト処理は、別プロセスです。制約プロセスで、A=1と書き込んでも、ポスト処理では、それを見事に忘れてしまいます。なので、情報交換する手段がありません。

これを回避する手段としては、制約プロセスとポスト処理プロセスで、同じ設定ルーチンを呼べば、同じ値で動作させることができます。

しかし、制約プロセスで、ユーザにインタラクティブに挙動を決定させた場合に、その結果をポスト処理で知ることは出来ません。そうした場合の処理方法についてです。

制約プロセスで取得した情報は、CSVで書きこみ、ポスト処理ではそのCSVを読む方法と取っています。



def set_advisor_method():
    global advisor_count_method
    advisor_count_method=1 #0→0 1→1 2→1 3→2 4→2
    #advisor_count_method=1 #0→0 1→0 2→1 3→1 4→2
    
    MessageBox = ctypes.windll.user32.MessageBoxW
    res=MessageBox(HWND, 'アドバイザカウント方法 3人(1人)で2人(1人)でカウント(推奨)する', 'アドバイザカウント方法', 3)
    if res==6:
        advisor_count_method=0
    write_csv('csv.csv')

def write_csv(file_name1):
    file_name =project_file_path+'/'+file_name1
    with open(file_name, 'w') as f:
        writer = csv.writer(f)
        list=[]
        list.append(advisor_count_method)
        writer.writerow(list)

def read_csv(file_name1):
    file_name =project_file_path+'/'+file_name1
    global advisor_count_method
    with open(file_name,'r') as f:
        reader = csv.reader(f)
        cnt=0
        for row in reader:
            print(row)
            if cnt==0:
                advisor_count_method=row[0]
            cnt +=1
        print('advisor_cnt_method',advisor_count_method)

def post_main():
    global advisor_count_method
    read_csv('csv.csv')
    check_comittee()



allowable_errors=3
global advisor_count_method
set_advisor_method()

0 件のコメント:

コメントを投稿