質問編集履歴
3
code例の簡略化
test
CHANGED
File without changes
|
test
CHANGED
@@ -4,23 +4,15 @@
|
|
4
4
|
|
5
5
|
```python
|
6
6
|
|
7
|
-
async def async_fn
|
7
|
+
async def async_fn():
|
8
8
|
|
9
|
-
await async_fn2()
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
async def async_fn2():
|
14
|
-
|
15
|
-
自身の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_fn
|
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
|
-
最終的にやりたいのは
|
33
|
+
最終的にやりたいのは とあるGUI libraryのイベントのcallback関数から`coroutine.throw()`を呼ぶことで、問題はcallback関数がそのcoroutineのinner関数として作られることです。だから実行中のcoroutineから自身のcoroutine objectを得て、それをcallback関数から見えるようにしたいです。
|
2
最終的にやりたいことを追記
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
文調の修正
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()`のような
|
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を得る方法はありませんか?
|