質問編集履歴
2
df1_dfにリストのまま代入しようとしていた問題を解決(pandasでデータフレームにした)、簡易な表現に変更
title
CHANGED
File without changes
|
body
CHANGED
@@ -6,13 +6,15 @@
|
|
6
6
|
レーサーの数は3とする。
|
7
7
|
|
8
8
|
###目的
|
9
|
-
なるべく短時間で処理を行
|
9
|
+
複数の並列処理を入れ子構造で動かし、なるべく短時間で処理を行えるようにしたい。
|
10
10
|
|
11
11
|
### 知りたい事
|
12
|
-
下記コードが進行不可能な理由。
|
12
|
+
下記コードが進行不可能な理由。←解決
|
13
13
|
下記コードを動かす改善方法。
|
14
14
|
他の有効な並列演算方法はあるかどうか。
|
15
15
|
daemonic processesとは何か。
|
16
|
+
追記:プロセッシングしてスレッディングすれば解決の可能性があるかもしれないとの事なので、サンプルコードを組んでいただけると助かります。
|
17
|
+
自身でもやってみます。
|
16
18
|
|
17
19
|
###環境
|
18
20
|
google cocolaboratory
|
@@ -37,24 +39,18 @@
|
|
37
39
|
def try_def(try_times):
|
38
40
|
count = 3#count:レーサーの数
|
39
41
|
#要素数:countの乱数を生成 = ネズミがゴールするまでにかかった時間(ラップタイム)
|
40
|
-
rap_time_list =
|
42
|
+
rap_time_list = list()#リストとして初期化
|
41
43
|
for i in range(count):
|
42
|
-
rap_time_list
|
44
|
+
rap_time_list.append(random.uniform(30,60))#30~60(秒)の乱数をリストに追加。
|
43
45
|
#rap_time_listをデータフレームにし、0列目にラップタイムを持つデータフレームを作成。
|
44
|
-
df1_df = rap_time_list
|
46
|
+
df1_df = pandas.DataFrame(rap_time_list)
|
45
|
-
#上記データフレームにレーサー番号をつけたいので、
|
47
|
+
#上記データフレームにレーサー番号をつけたいので、indexを付与。
|
46
|
-
df1_df
|
48
|
+
df1_df = df1_df.reset_index()
|
47
49
|
#0列目のラップタイムをソートして数字の小さい順(ゴール早かった順)にソート。
|
48
50
|
df2_df = df1_df.sort_values(by=0)
|
49
|
-
#レーサー番号も追従してソートされているので、利用して順位を取る。
|
51
|
+
#レーサー番号もindexとして追従してソートされているので、利用して順位を取る。
|
50
|
-
#レーサー番号はdf2_dfの1列目に入っている。
|
51
52
|
for i in range(count):
|
52
|
-
dummy = df2_df.iat[i,1]
|
53
|
-
dummy2 = str(dummy)
|
54
|
-
if i == 0:
|
55
|
-
race_result = dummy2
|
56
|
-
elif i > 0:
|
57
|
-
|
53
|
+
race_result = [df2_df.iat[i,0] for i in range(count)]
|
58
54
|
return race_result
|
59
55
|
|
60
56
|
#####レースを任意回数分(race_times回)行って結果リストを作成する関数の定義#####
|
1
import pandasの追記, 誤:da1_df[1] = list(range(count)) →正:df1_df[1] = list(range(count))
title
CHANGED
File without changes
|
body
CHANGED
@@ -29,7 +29,7 @@
|
|
29
29
|
```Python
|
30
30
|
ソースコード
|
31
31
|
|
32
|
-
|
32
|
+
import pandas
|
33
33
|
import random
|
34
34
|
from multiprocessing import Pool
|
35
35
|
|
@@ -43,7 +43,7 @@
|
|
43
43
|
#rap_time_listをデータフレームにし、0列目にラップタイムを持つデータフレームを作成。
|
44
44
|
df1_df = rap_time_list
|
45
45
|
#上記データフレームにレーサー番号をつけたいので、1列目に番号をつけてラップタイムと紐付ける。
|
46
|
-
|
46
|
+
df1_df[1] = list(range(count))
|
47
47
|
#0列目のラップタイムをソートして数字の小さい順(ゴール早かった順)にソート。
|
48
48
|
df2_df = df1_df.sort_values(by=0)
|
49
49
|
#レーサー番号も追従してソートされているので、利用して順位を取る。
|