回答がなかなか得られなかったので、ちょっと質問を変えさせていただきます。
ソケットが込み合っている可能性があり、
https://qiita.com/maueki/items/8f1e190681682ea11c98
↑こちらのサイトのようにブロッキング、ノンブロッキングを入れる必要があるのでしょうか。
Pythonで、ソケット通信にて、ソフト2個を並列処理にて動作させようとしておりますが、
並列処理はできておるのですが、非常に重く、遅いです。また、固まり、最終的にソフトが落ちるときがあります。
1個では落ちません。おそらく、並列処理が悪さしてると思うのですが、通信をどのようにしたら良いか、socket以外のライブラリー、または通信待機など入れるべきでしょうか?
import glob from pathlib import Path import shutil import os,sys,time from concurrent import futures import socket from collections import namedtuple r_1=r"*****" input_dir=Path(r_1) target_ip1 = "localhost" target_port1 = int(9494) target_ip2 = "localhost" target_port2 = int(9595) def func1(path1): global j1 j1=j1+1 if j==1: tcp_client1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) tcp_client1.connect((target_ip1, target_port1)) v = "***," + str(path1) tcp_client1.send(v.encode(encoding='utf-8')) response1 = tcp_client1.recv(buffer_size) response1 = response1.decode(encoding='utf-8') if j1==last: tcp_client1.shutdown(socket.SHUT_RDWR) tcp_client1.close() def func2(path2): global j2 j2 = j2+1 if j2==1: tcp_client2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) tcp_client2.connect((target_ip2, target_port2)) v = "***," + str(path2) tcp_client2.send(v.encode(encoding='utf-8')) response2 = tcp_client2.recv(buffer_size) response2 = response2.decode(encoding='utf-8') if j2==last: tcp_client2.shutdown(socket.SHUT_RDWR) tcp_client2.close() paths = list(input_dir.glob("**/*.jpg")) border, last = len(paths)//2, len(paths)-len(paths)%2 buffer_size = 4096 t1=time.time() future_list = [] global j1 global j2 j1=0 j2=0 with futures.ThreadPoolExecutor(2) as executor: for path1, path2 in zip(paths[:border], paths[border:last]): # タスクを追加する。 future1 = executor.submit(func1, str(path1)) future2 = executor.submit(func2, str(path2)) # Future オブジェクトを記録する。 future_list.append(future1) future_list.append(future2) t2 = time.time() elapsed_time = t2-t1 print(f"経過時間:{elapsed_time}")
落ちないようにどこを改善し、高速通信できますでしょうか。
宜しくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/15 02:14
2021/02/15 02:42
2021/02/15 03:46
2021/02/15 04:28
2021/02/15 06:06
2021/02/15 06:34
2021/02/15 07:11
2021/02/15 09:54
2021/02/15 12:56
2021/02/16 00:24 編集
2021/02/17 02:53
2021/02/17 04:47
2021/02/17 08:44
2021/02/17 09:35
2021/02/18 07:25 編集