回答編集履歴

1

追記

2018/07/02 04:47

投稿

YouheiSakurai
YouheiSakurai

スコア6142

test CHANGED
@@ -1 +1,63 @@
1
1
  経験則ですが`concurrent.futures`は高速化に適しているとは思いません。処理の内容や入出力の性質にもよりますが`asyncio`の方が適している気がします。
2
+
3
+
4
+
5
+ # 追記
6
+
7
+
8
+
9
+ ```python
10
+
11
+ from concurrent.futures import ThreadPoolExecutor as PoolExecutor
12
+
13
+ from functools import partial
14
+
15
+ from random import random
16
+
17
+ from time import sleep
18
+
19
+
20
+
21
+
22
+
23
+ def func1():
24
+
25
+ fake_read = partial(input, "なんか入力してみてね。ちなみに空行で終了です。")
26
+
27
+ yield from iter(fake_read, "")
28
+
29
+
30
+
31
+
32
+
33
+ def func2(x):
34
+
35
+ sleep(random())
36
+
37
+ print("あなたが入力したのはこれね。", "->", x)
38
+
39
+
40
+
41
+
42
+
43
+ def main():
44
+
45
+ done = partial(print, "処理終わったよ。", "->")
46
+
47
+ with PoolExecutor() as pool:
48
+
49
+ for x in func1():
50
+
51
+ f = pool.submit(func2, x)
52
+
53
+ f.add_done_callback(done)
54
+
55
+
56
+
57
+
58
+
59
+ if __name__ == '__main__':
60
+
61
+ main()
62
+
63
+ ```