• 0
الاخير زمانه

Python & Processes ؟؟

سؤال

السلام عليكــم ورحمـة الله وبركاتــه ،،

اريد ان اعلم هل توفر لغة بايثون امكانية التعامل مع الـ processes ،

يعني مثلا اظهار ال active processes والمصادر و الذاكرة التي تستخدمها كل بروسيس وايضا مثلا عمل خيار kill وما الى ذلك.

لم اجد في الكتب التي اطلعت عليها هذا الامر.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

34 إجابة على هذا السؤال .

  • 0

تستطيع التعامل مباشره مع ال Win32Api

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
تستطيع التعامل مباشره مع ال Win32Api

اريد ذلك من خلال لينكس ،، بما انه استطيع التعامل مع ال WinAPI المفروض ايضا استطيع التعامل مع ال system call للينكس.

وشكرا اخي على درك.

انت ممكن تستفيد من ال /proc

واطلاع سريع على os module

http://docs.python.org/library/os.html

شكرا اخي احمد على الرابط ،،

بدات اقرء بايثون مباشرة بالكتب وللأسف لم اطلع مسبقا على ال doc يبدو انه غني ،، شكرا على الرابط مرة اخرى.

خلال تجاولك اخي في النت اذا وجدت اي موضوع بهذا الخصوص ، processes , processes monitoring بأستخدام البايثون طبعا ارجو اخباري به.

شاكرا لك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
شكرا اخي احمد على الرابط ،،

بدات اقرء بايثون مباشرة بالكتب وللأسف لم اطلع مسبقا على ال doc يبدو انه غني ،، شكرا على الرابط مرة اخرى.

خلال تجاولك اخي في النت اذا وجدت اي موضوع بهذا الخصوص ، processes , processes monitoring بأستخدام البايثون طبعا ارجو اخباري به.

شاكرا لك

انا راجعت سورس xfce4-taskmanager من شوية وبيستخدم /proc زى ماقلتلك :)

http://goodies.xfce.org/projects/applicati...ce4-taskmanager

تم تعديل بواسطه ahmed_youssef
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا اخي احمد ،، لكن للأسف البرنامج ليس مكتوبا بالبايثون.

ممكن تنفيذ الامر بالاستفادة من ال /proc او اخذ المعللومات من ps ،،

و لكني مبتدئ ويصعب علي تنفيذ الامر بمفردي ، لذا بحاجة الى شيئ عملي.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اتفضل

http://bitbucket.org/xmonader/pytasker/

تحويل مباشر من xfce-taskmanager-linux

اذا عايز معلومات عن Task معينة استخدم get_task_by_pid

لو عايز كل ال tasks الحالية فى ال /proc استخدم get_task_list

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الله يبارك فيك اخي احمد و جزيت خيرا.

سأطلع على تفاصيل الكود و ربما سأعود لأسأل اذا لم افهم شيء في الكود و لم اجده في ال doc. او في الكتب :rolleyes:

شاكرا لك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكــم ورحمـة الله وبركاتــه ،،

اخي الكريم ممكن توضح لي هذا الجزء من الكود

  def report(self):
for attr, value in self.__dict__.items():
print attr, " =>" , value

وايضا ما فائدة هذه الدوال

def get_system_status(sysstatus):
raise NotImplementedError

def get_cpu_usage_from_proc(sysstatus):
raise NotImplementedError

وايضا اتمنى ان تنظر اخي في مخرجات تنفيذ البرنامج (في المرفقات) ، الامر غير مفهوم

output.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
__dict__ is the attribute dictionary

بخصوص __dict__ كان ممكن تعمل print ليه وهتعرف محتواه :)

>>> class X(object):
... def __init__(self):
... self.a=1
... self.b=2
>>> X().__dict__
{'a': 1, 'b': 2}

راجع ال Data Model لتفاصيل اكتر

http://docs.python.org/reference/datamodel.html

بخصوص ال NotImplementedError هو Error بيرث ال RuntimeError زى مانت شايف

class NotImplementedError(RuntimeError)
| Method or function hasn't been implemented yet.

--ال get_system_status implemented

http://bitbucket.org/xmonader/pytasker/cha...t/882d48179e60/

وهى بتجيب بعض الأجزاء من ملف /proc/meminfo و /proc/cpuinfo

الoutput منطقى ..انت بس شيل ال print لل exception الناتج من

yield get_task_by_pid(int(f))

فى iget_tasks

تم تعديل بواسطه ahmed_youssef
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

مشكور اخي احمد بارك الله فيك ،، انا لسه مبتدئ لذا تواجهني بعض المشاكل.

احاول الان اقرء في بعض الكتب + الاطلاع على ال docs .

اكرر شكري لك اخي الكريم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ولايهمك .. اى استفسار تحت امرك اذا كنت عارفه :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
ولايهمك .. اى استفسار تحت امرك اذا كنت عارفه regular_smile.gif

نفع الله بك اخي احمد و جزيت خيرا.

طبعا البرنامج اريد تطويره ليكون بواجهة رسومية.

اعجبتني محتويات كتاب Core Python Programming, Second Edition

وان شاء الله راح ابدي اقرء به

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

كتاب ممتاز جدا

فى ابديت سريع على pytasker تم اضافة meminfo, cpuinfo تقدر توصل لمحتويات الملفات بكل سهولة http://programming-fr34ks.net/smf/python/p.../msg584/#msg584

ومستنين ال GUI

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
فى ابديت سريع على pytasker تم اضافة meminfo, cpuinfo تقدر توصل لمحتويات الملفات بكل سهولة http://programming-fr34ks.net/smf/python/p.../msg584/#msg584

تم التحميل و قيد الاطلاع ان شاء الله.

جزيت خيرا.

ومستنين ال GUI

قول يارب :happy:

ان شاء الله ،،

كنت اتعلم في كتاب How to program وهو ايضا كتاب رائع ،، يشرح ال GUI بأستخدام Tkinter

لكن في كتاب Beginning Python: From Novice to Professional

وجدته يشرح مكتبة wxPython ،، حسيت انها اسهل ،، ايضا وجدت عنها كتاب wxPython in Action .

ان شاء الله سأستمر مع ال wxPython .

ما رأيك؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

هو المشروع بسيط فأى حاجة هتقضى الغرض

-- فكر تنتقل ل Qt

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
- فكر تنتقل ل Qt

سبق وان تعاملت مع ال Qt

http://www.arabteam2000-forum.com/index.php?showtopic=176027

اما اذا تقصد PyQt فليس لدي معلومات :(

جهد كبير مبذول منك اخي احمد في وضع الدروس و الترجمة ،، الله يبارك فيك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

Python/Qt اسهل بكتير من C++/Qt

جرب تمشى معاها من هنا

http://ojuba.org/wiki/docs/pyqt4

والأمثلة المرفقة معاها غنية جدا

واى جزئية فى الترجمة مش واضحة او فيها مشاكل ياريت تبلغنى

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
Python/Qt اسهل بكتير من C++/Qt

جرب تمشى معاها من هنا

http://ojuba.org/wiki/docs/pyqt4

والأمثلة المرفقة معاها غنية جدا

واى جزئية فى الترجمة مش واضحة او فيها مشاكل ياريت تبلغنى

شكرا اخي ، قمت بطباعة الكتاب وجاري الاطلاع ان شاء الله.

لنا عودة اذا في شي غير واضح :happy:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

هناك بعض الامور غير مفهومة في الاضافات على البرنامج الخاصة ب meminfo و cpuinfo

سأراجع ال docs لفهم بعض الامور

لكن فقط اردت اسألك

انت في كلاس SystemStatus

قرأت محتويات الذاكرة و المعالج بدالة get_system_status

ما فائدتها؟

لان انت رجعت قرات المعلومات في class MemInfo بالدلة reload

ونفس الشيء بالنسبة للمعاالج؟؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الأول توضيح

get_system_status كانت بتجيب بعض المعلومات من /proc/meminfo و /proc/cpuinfo قبل مايتعمل MemInfo, CPUInfo classes فكانت الطريقة افتح الملف اسحب الجزئية المطلوبة وخزنها فى ال SystemStatus object

لأن فى الأول كنت عامل تحويل مباشر من سورس XFCE-TaskManager

ونفس الشئ بالنسبة للميثودز ولكن لسه مش حولت ال implementation للميثود "get_system_status" لتعتمد على استخدام MemInfo, CPUInfo

الخلاصة لإستخدام نفس الخدمات اللى بيقدمها xfce-taskmanager استخدم get_task_by_pid, get_task_list, iget_tasks, get_system_status

اذا عايز تستخدم pythonic way فى التعامل مع ملفات meminfo, cpuinfo لأى سبب استخدم MemInfo, CPUInfo

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

محاولة اولى ،، بصورة مستعجلة (اثناء وقت الفراغ في العمل :lol: )،،

استعملت wxpython

فقط اظهرت ال name , id

post-47438-1253036502_thumb.jpg

لكن لا اعرف ما سبب ظهور بعض الفراغات؟

اضفت هذا الكلاس الى البرنامج

class Processes(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size=(380, 230))

hbox = wx.BoxSizer(wx.HORIZONTAL)
panel = wx.Panel(self, -1)

self.list = wx.ListCtrl(panel, -1, style=wx.LC_REPORT)
self.list.InsertColumn(0, 'PName', width=140)
self.list.InsertColumn(1, 'PID', width=130)

for task in get_task_list():
index = self.list.InsertStringItem(sys.maxint, task.name)
self.list.SetStringItem(index, 1, task.pid)


hbox.Add(self.list, 1, wx.EXPAND)
panel.SetSizer(hbox)

self.Centre()
self.Show(True)
app = wx.App()
Processes(None, -1, 'Processes')
app.MainLoop()

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

عملت fix سريع.. استخدم name للحصول على اسم العملية واستخدم runningfile للحصول على اسم الملف اللى تم تشغيله مثلا totem مشغل ملف x

فى احيانا ملفات cmdline اللى بيتجاب منها الإسم -ودا كان شئ خاطئ تم تعديله- بيكون فاضى فالحل انك تعمل تشيك بإستخدام .strip على الtask.name واذا كان فاضى تشوف هتتعامل معاه ازاى يمكن تفكر تعديه

		for task in get_task_list():
if task.name.strip():
index = self.list.InsertStringItem(sys.maxint, task.name)
self.list.SetStringItem(index, 1, task.pid)

بالمناسبة استخدم iget_tasks لأن ليها اداء افضل مع for

تم تعديل بواسطه ahmed_youssef
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا احمد ،، الان حلت المشكلة.

بالمناسبة استخدم iget_tasks لأن ليها اداء افضل مع for

بما انه ذكرت هذه الدالة ،، اريد ان اسألك عنها ،، لم افهما كثيرا صراحة

يعني انت داخل هذه الدالة تستدعي دالة get_task_by_pid داخل جملة for ،

معلومات البروسيس التي ستعود اين ستخزن؟

انت لم تستلمها بمتغير وايضا الدالة لا تحوي على ارجاع.

المشكلة لدي اني لا اعرف ما فائدة yield ،، لكني لم اسأل لأني الان اقرء و قلت اكيد راح اجدها في الكتب او في ال docs ،،

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

iget_tasks هى generator

هتلاقيها فى كتاب البايثون فى شابتر 4

http://programming-fr34ks.net/strikytutori...lsPyPfBook2.pdf

بس بإختصار هى كودها مش بيتنفذ غير عند الحاجة ليه lazy evaluated

http://www.learningpython.com/2009/02/23/i...nerators-oh-my/

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .