Spaces:
Running
Running
Update ML.py
Browse files
ML.py
CHANGED
|
@@ -1249,4 +1249,50 @@ def safe_json_parse(json_string):
|
|
| 1249 |
print(f"❌ فشل تحليل JSON بعد الإصلاح: {e}")
|
| 1250 |
return None
|
| 1251 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1252 |
print("✅ ML Processor loaded - No Default Values & Enhanced Analysis")
|
|
|
|
| 1249 |
print(f"❌ فشل تحليل JSON بعد الإصلاح: {e}")
|
| 1250 |
return None
|
| 1251 |
|
| 1252 |
+
|
| 1253 |
+
async def process_multiple_symbols_parallel(self, symbols_data_list, max_concurrent=20):
|
| 1254 |
+
"""معالجة متعددة للرموز بشكل متوازي مع التحكم في التزامن"""
|
| 1255 |
+
try:
|
| 1256 |
+
print(f"🚀 بدء المعالجة المتوازية لـ {len(symbols_data_list)} رمز (بحد أقصى {max_concurrent} متزامنة)...")
|
| 1257 |
+
|
| 1258 |
+
# تقسيم العمل إلى دفعات لتجنب الحمل الزائد
|
| 1259 |
+
batches = [symbols_data_list[i:i + max_concurrent]
|
| 1260 |
+
for i in range(0, len(symbols_data_list), max_concurrent)]
|
| 1261 |
+
|
| 1262 |
+
all_results = []
|
| 1263 |
+
|
| 1264 |
+
for batch_num, batch in enumerate(batches):
|
| 1265 |
+
print(f" 🔄 معالجة الدفعة {batch_num + 1}/{len(batches)} ({len(batch)} رمز)...")
|
| 1266 |
+
|
| 1267 |
+
# إنشاء مهام للدفعة الحالية
|
| 1268 |
+
batch_tasks = []
|
| 1269 |
+
for symbol_data in batch:
|
| 1270 |
+
task = asyncio.create_task(self.process_and_score_symbol_enhanced(symbol_data))
|
| 1271 |
+
batch_tasks.append(task)
|
| 1272 |
+
|
| 1273 |
+
# انتظار انتهاء الدفعة الحالية
|
| 1274 |
+
batch_results = await asyncio.gather(*batch_tasks, return_exceptions=True)
|
| 1275 |
+
|
| 1276 |
+
# تصفية النتائج الناجحة
|
| 1277 |
+
successful_results = []
|
| 1278 |
+
for result in batch_results:
|
| 1279 |
+
if isinstance(result, Exception):
|
| 1280 |
+
continue
|
| 1281 |
+
if result and result.get('enhanced_final_score', 0) > 0.4:
|
| 1282 |
+
successful_results.append(result)
|
| 1283 |
+
|
| 1284 |
+
all_results.extend(successful_results)
|
| 1285 |
+
print(f" ✅ اكتملت الدفعة {batch_num + 1}: {len(successful_results)}/{len(batch)} ناجحة")
|
| 1286 |
+
|
| 1287 |
+
# انتظار قصير بين الدفعات لتجنب rate limits
|
| 1288 |
+
if batch_num < len(batches) - 1:
|
| 1289 |
+
await asyncio.sleep(1)
|
| 1290 |
+
|
| 1291 |
+
print(f"🎯 اكتملت المعالجة المتوازية: {len(all_results)}/{len(symbols_data_list)} رمز تم تحليلها بنجاح")
|
| 1292 |
+
return all_results
|
| 1293 |
+
|
| 1294 |
+
except Exception as error:
|
| 1295 |
+
print(f"❌ خطأ في المعالجة المتوازية: {error}")
|
| 1296 |
+
return []
|
| 1297 |
+
|
| 1298 |
print("✅ ML Processor loaded - No Default Values & Enhanced Analysis")
|