teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2018/07/02 04:47

投稿

YouheiSakurai
YouheiSakurai

スコア6151

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