This will find all the nodes within 1km of each of 44,000 points. After creating the graph, the node search completes in approx 16 seconds on my laptop and finds 57,134,000 nodes. The resulting GeoDataFrame is (non-uniquely) indexed by the position of the point in the original array of coordinates, and its values are the OSM IDs of all the graph nodes within 1km of that point.
import geopandas as gpd
import numpy as np
import osmnx as ox
ox.settings.log_console = True
# create graph and extract node geometries
G = ox.graph.graph_from_place('New York City, New York, United States', network_type="all", retain_all=True)
gdf_nodes = ox.graph_to_gdfs(G, edges=False)[['geometry']]
# create array of 44,000 points
coords = np.array([(40.718797266, -73.753347584), (40.713511106, -73.759968316)] * 22000)
# get 1km buffers around each point
points = gpd.GeoDataFrame(crs='epsg:4326', geometry=gpd.points_from_xy(coords[:, 1], coords[:, 0]))
buffers = ox.project_gdf(ox.project_gdf(points).buffer(1000), to_latlong=True)
gdf_buffers = gpd.GeoDataFrame(geometry=buffers)
# find all the nodes within the buffer of each point
result = gpd.sjoin(gdf_buffers, gdf_nodes, how='left', predicate='intersects')['index_right']