PDA

View Full Version : حرفه ای: مدیریت نخ ها در پایتون



hixnal
یک شنبه 05 آبان 1392, 16:15 عصر
سلام
من یک پروکسی سرور با پایتون درست کردم که با نخ ها و سوکت کار می کنه .
موضوع اینجا است که اگر این نخ ها کارهاشون اسان باشه منظورم اینه که بخواهند داده های سبک ارسال یا دریافت کنند خوب است ولی همین که کار نخ ها سخت شد منظورم اینه که بخواهم مثلا 10 تا دانلود داشته باشم شاید دانلود یازدهم10 دقیقه طول بکشه تا شروع بشه.یکی بهم گفت از تابع sleep استفاده کن در نخ ها .منم همین کار کردم بهتر شد ولی اونطوری که باید باشه نیست.
حالا من سوالم اینجاست که نخ ها چطوری می تونم در پایتونن مدیریت کنم مثلا یک نخ به تعلیق بره و یک نخ سرورس بگیره مثل الگریتم رند رابین در سیستم عامل.پایتون خود نخ ها مدیریت می کند ولی به درد کار من نمی خورد .

n.nowroozi
یک شنبه 05 آبان 1392, 16:55 عصر
منظور از نخ همون thread هست ؟
خب اینجوری که نمیشه چیزی گفت سوالت خیلی کلی و گنگه یا باید کدت رو بزاری ببینیم چیکار کردی تردهارو چجوری مدیریت کردی. حالا جدای از اون هم واسه اینجور کارها خیلی خیلی بهتره که از twisted استفاده کنی خودش همه اینهارو مدیریت میکنه برات با راندمان بسیار بالا!!

hixnal
یک شنبه 05 آبان 1392, 21:42 عصر
اره همون thread
ببین این پروژه کار http proxy رو انجام می ده . خودتون امتحانش کنید چند وب سایت را باز کنید و بگردید ببینید مشکل از کجاست ؟؟
http://up.ashiyane.org/images/iisoed3jv1tkixc9tnab.zip

hixnal
دوشنبه 06 آبان 1392, 09:03 صبح
کسی نیست کمک کنه ؟؟

hixnal
دوشنبه 06 آبان 1392, 15:38 عصر
بابا اون ادعا کن هاش بیان جواب بدن.

n.nowroozi
دوشنبه 06 آبان 1392, 20:40 عصر
یه چندتا کامنتی چیزی بزار توی کدت معلوم باشه چی کار کردی خیلی تو هم نوشتی(یا نمیدونم واسه من اینجوری به نظر میاد!!!) یه توضیحی هم بده برنامه دقیقا عملکردش چیه شاید تونستم کمکی بکنم
بعد بهم گفتم کتابخونه خوبی رو واسه کارت انتخاب نکردی twisted واسه اینکار فوق العادست.

hixnal
دوشنبه 06 آبان 1392, 21:46 عصر
ببین رفیق من باید یه چیزی مثل GIL درست کنم (global interprater lock) که قسمت مربوط به مدیریت نخ ها در پایتون هست.پروژه خیلی باید قدرت کنترل به من به بده .با twisted کارم راه نمی افته.این پروژه هم یه برنامه ی کوچک هست که کار پروکسی سرور انجام میده کافیست اجرا کنید و پروکسی browser تون رو به ای پی لوکال و پورت 100 تنظیم کنید و بعد برید وب گردی و ببینید که سرعتش پایین است.در ظمن https هم باز نمی کنه (فعلا براش نگذاشتم)

n.nowroozi
دوشنبه 06 آبان 1392, 21:56 عصر
مطمينی کدی که دادی درست بوده؟ چون برنامت ران نمیمونه

[root@localhost nima]# python test.py
[root@localhost nima]#

hixnal
دوشنبه 06 آبان 1392, 22:03 عصر
اره درست است با پایتون 3.3 اجرا کن بعد مهم نیس به همین شکل هم که هست شما پروکسی تون رو کانفیگ کنید.

hixnal
چهارشنبه 08 آبان 1392, 08:05 صبح
چی شد رفیق ؟ تونستی استفاده کنی ازش ؟؟

n.nowroozi
چهارشنبه 08 آبان 1392, 11:31 صبح
معادل کد شما با فریم ورک دوست داشتنی twisted :


from twisted.web import proxy, http
from twisted.internet import reactor
from twisted.python import log
import sys
log.startLogging(sys.stdout)

class ProxyFactory(http.HTTPFactory):
protocol = proxy.Proxy

reactor.listenTCP(8080, ProxyFactory())
reactor.run()