0%

python | 多线程结合协程

再阅读之前请先参考

之前的多线程,用的是 3.5 的语法,loop,这次我们使用 3.7 的语法。

相关参考

考虑这样一个场景。

在量化中,主程序接收数据,然后分配给每一个线程池中的线程,然后线程来调用协程处理。

这里直接使用代码展示。

正确的使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import asyncio

from concurrent.futures import ThreadPoolExecutor


async def t1():
await asyncio.sleep(5)
print(1)


def t():
asyncio.run(t1())


if __name__ == '__main__':
pool = ThreadPoolExecutor(max_workers=5)

while 1:
# pool.submit(t)
# 这两个处理是一样的
pool.submit(asyncio.run, t1())

错误的使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import asyncio

from concurrent.futures import ThreadPoolExecutor


async def t1():
await asyncio.sleep(5)
print(1)


if __name__ == '__main__':
pool = ThreadPoolExecutor(max_workers=5)

while 1:
pool.submit(asyncio.run(t1()))
请我喝杯咖啡吧~