質問編集履歴

2

分かりやすく編集

2020/07/19 05:45

投稿

hoge1243
hoge1243

スコア22

test CHANGED
File without changes
test CHANGED
@@ -8,37 +8,49 @@
8
8
 
9
9
  答えを出すには約10秒ほどかかります。
10
10
 
11
- 答えを出している間にquitと打ち込んだらプログラム2で反応して、プログラム1をsys.exit()で停止させたいです。
11
+ 答えを出している間にquitと打ち込んだらプログラム2で反応して、プログラム1を停止させたいです。
12
12
 
13
- プログラム1と2は
14
-
15
- ```program1
13
+ ```
16
14
 
17
15
  import time
18
16
 
17
+ import threading
18
+
19
+ def program1():
20
+
21
+ a = input()
22
+
23
+ #本来はここに処理が入るのでtime.sleepで代用
24
+
25
+ time.sleep(10)
26
+
27
+ print(int(a)+10)
28
+
29
+ def program2():
30
+
31
+ while True:
32
+
33
+ quit = input()
34
+
35
+ if quit == "quit":
36
+
37
+ #breakでprogram2が終了したのをthreadingのjoinで検知し停止させます
38
+
39
+ break
19
40
 
20
41
 
21
- a = input()
22
42
 
23
- #本来はここに処理が入るのでtime.sleepで代用
43
+ multi_1 = threading.Thread(target=program1)
24
44
 
25
- time.sleep(10)
45
+ multi_2 = threading.Thread(target=program2)
26
46
 
27
- print(int(a)+10)
47
+ multi_1.start()
28
48
 
29
- ```
49
+ multi_2.start()
30
50
 
31
- ```program2
51
+ multi_2.join()
32
52
 
33
- while True:
34
53
 
35
- quit = input()
36
-
37
- if quit == "quit":
38
-
39
- #breakでprogram2が終了したのをthreadingのjoinで検知し停止させます
40
-
41
- break
42
54
 
43
55
  ```
44
56
 
@@ -48,6 +60,6 @@
48
60
 
49
61
 
50
62
 
51
- プログラム1と2の関数並列実行したのですが、一方しか入力したデータ届いませんでした
63
+ これを実行したのですが、試し1を入力して10秒待っても答え返っません。
52
64
 
53
65
  どうすれば良いでしょうか?

1

再現手順追加

2020/07/19 05:44

投稿

hoge1243
hoge1243

スコア22

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- プログラム1とプログラム2があります。
5
+ プログラム1とプログラム2という関数があります。
6
6
 
7
7
  プログラム1はinputで命令を受け取り、それに対する答えを返します。
8
8
 
@@ -10,12 +10,44 @@
10
10
 
11
11
  答えを出している間にquitと打ち込んだらプログラム2で反応して、プログラム1をsys.exit()で停止させたいです。
12
12
 
13
+ プログラム1と2は
13
14
 
15
+ ```program1
16
+
17
+ import time
18
+
19
+
20
+
21
+ a = input()
22
+
23
+ #本来はここに処理が入るのでtime.sleepで代用
24
+
25
+ time.sleep(10)
26
+
27
+ print(int(a)+10)
28
+
29
+ ```
30
+
31
+ ```program2
32
+
33
+ while True:
34
+
35
+ quit = input()
36
+
37
+ if quit == "quit":
38
+
39
+ #breakでprogram2が終了したのをthreadingのjoinで検知し停止させます
40
+
41
+ break
42
+
43
+ ```
44
+
45
+ このような感じです。
14
46
 
15
47
  ### 発生している問題・エラーメッセージ
16
48
 
17
49
 
18
50
 
19
- プログラム1と2を並列実行したのですが、一方にしか入力したデータが届いていませんでした。
51
+ プログラム1と2の関数を並列実行したのですが、一方にしか入力したデータが届いていませんでした。
20
52
 
21
53
  どうすれば良いでしょうか?