質問編集履歴

3

code例の簡略化

2020/09/04 16:29

投稿

gottadiveintopy
gottadiveintopy

スコア736

test CHANGED
File without changes
test CHANGED
@@ -4,23 +4,15 @@
4
4
 
5
5
  ```python
6
6
 
7
- async def async_fn1():
7
+ async def async_fn():
8
8
 
9
- await async_fn2()
10
-
11
-
12
-
13
- async def async_fn2():
14
-
15
- 自身のcoroutineを得る何らかの関数() # async_fn2()で作られたcoroutine
9
+ 自身のcoroutineを得る何らかの関数()
16
-
17
- 外側のcoroutineを得る何らかの関数() # この例でいうならasync_fn1()で作られたcoroutine
18
10
 
19
11
 
20
12
 
21
13
  async def main():
22
14
 
23
- await my_async_library.複数のcoroutineの完了を待機(async_fn1(), async_fn1(), ...他にも色々なcoroutine)
15
+ await my_async_library.複数のcoroutineの完了を待機(async_fn(), async_fn(), ...他にも色々なcoroutine)
24
16
 
25
17
 
26
18
 
@@ -38,4 +30,4 @@
38
30
 
39
31
 
40
32
 
41
- 最終的にやりたいのはとあるGUI libraryのイベントのcallback関数から`coroutine.throw()`を呼ぶことです。そしてそのcallback関数を作って登録するの正にそのcoroutineの実行中なのです。だから実行中のcoroutineから自身のcoroutine objectを得る方法が知りたいです。
33
+ 最終的にやりたいのは とあるGUI libraryのイベントのcallback関数から`coroutine.throw()`を呼ぶことで、問題はcallback関数がそのcoroutineのinner関数として作られることです。だから実行中のcoroutineから自身のcoroutine objectを得て、それをcallback関数から見えようにしたいです。

2

最終的にやりたいことを追記

2020/09/04 16:29

投稿

gottadiveintopy
gottadiveintopy

スコア736

test CHANGED
File without changes
test CHANGED
@@ -30,4 +30,12 @@
30
30
 
31
31
 
32
32
 
33
- `asyncio`においては`current_task()`という関数を使って実行中のcoroutineを得られるようなのでちょっと実装codeを覗いてみたのですが、どうやら[global変数](https://github.com/python/cpython/blob/54a66ade2067c373d31003ad260e1b7d14c81564/Lib/asyncio/tasks.py#L933-L935)を用いて実行中のtaskを自分で管理しているようです。そんな事をせずとも例えば`inspect.get_current_coroutine()`のような形で簡単に実行中のcoroutineを得る方法りませんか?
33
+ `asyncio`においては`current_task()`という関数を使って実行中のcoroutineを得られるようなのでちょっと実装codeを覗いてみたのですが、どうやら[global変数](https://github.com/python/cpython/blob/54a66ade2067c373d31003ad260e1b7d14c81564/Lib/asyncio/tasks.py#L933-L935)を用いて実行中のtaskを自分で管理しているようです。そんな事をせずとも例えば`inspect.get_current_coroutine()`のような形で簡単に実行中のcoroutineを得る方法れば教えてほしいです。
34
+
35
+
36
+
37
+ ### 最終的にやりたい事
38
+
39
+
40
+
41
+ 最終的にやりたいのは、とあるGUI libraryのイベントのcallback関数から`coroutine.throw()`を呼ぶことです。そしてそのcallback関数を作って登録するのが正にそのcoroutineの実行中なのです。だから実行中のcoroutineから自身のcoroutine objectを得る方法が知りたいのです。

1

文調の修正

2020/09/04 12:30

投稿

gottadiveintopy
gottadiveintopy

スコア736

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- 自分で非同期libraryを書いているのですが、実行中のコルーチンが自身のコルーチンオブジェクトを得る簡単な方法教えてほしいです。例えば以下のようなです。
1
+ 自分で非同期libraryを書いているのですが、実行中のコルーチンが自身のコルーチンオブジェクトを得る簡単な方法ります例えば以下のような感じです。
2
2
 
3
3
 
4
4
 
@@ -30,4 +30,4 @@
30
30
 
31
31
 
32
32
 
33
- `asyncio`においては`current_task()`という関数を使って実行中のcoroutineを得られるようなのでちょっと実装codeを覗いてみたのですが、どうやら[global変数](https://github.com/python/cpython/blob/54a66ade2067c373d31003ad260e1b7d14c81564/Lib/asyncio/tasks.py#L933-L935)を用いて実行中のtaskを自分で管理しているようです。そんな事をせずとも例えば`inspect.get_current_coroutine()`のような感じで簡単に実行中のcoroutineを得る方法はありませんか?
33
+ `asyncio`においては`current_task()`という関数を使って実行中のcoroutineを得られるようなのでちょっと実装codeを覗いてみたのですが、どうやら[global変数](https://github.com/python/cpython/blob/54a66ade2067c373d31003ad260e1b7d14c81564/Lib/asyncio/tasks.py#L933-L935)を用いて実行中のtaskを自分で管理しているようです。そんな事をせずとも例えば`inspect.get_current_coroutine()`のようなで簡単に実行中のcoroutineを得る方法はありませんか?