我有一个程序,其中基于用户输入的线程子示例类的一些实例被创建和启动。除此之外,Example类还会根据用户输入启动多个线程。这段代码的全部意义在于发送请求。
到目前为止,由于创建了大量的线程,用户可能会遇到计算机资源限制。避免这种情况的可能解决方案是什么?我应该使用线程+队列,多处理,异步或其他什么?
Thanks in advance
import threading
import time
import requests
class Example(threading.Thread):
def __init__(self, number_of_request):
super().__init__()
self.number_of_requests = number_of_request
def run(self):
for i in range(0, self.number_of_requests):
threading.Thread(target=self.function()).start()
def function(self):
requests.post("some url")
time.sleep(5)
if __name__ == '__main__':
number_of_entries = int(input("Enter number of entries:"))
number_of_requests = int(input("Enter number of requests"))
for i in range(0, number_of_entries):
Example(number_of_requests).start()
解决这个问题的方法有很多
1 - asyncio + aiohttp2 - threading
3 - multiprocessing4 - asyncio + aiosonic
这完全取决于你的计算机和网络有多少资源
希望这对你有帮助:)